使用 Pester 测试强制参数

2023-12-30

我正在尝试找出如何对缺少的参数进行 Pester 测试:

查找 Waldo.Tests.ps1

$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'

Describe 'Mandatory paramters' {
    it  'ComputerName' {
        {
            $Params = @{
                #ComputerName = 'MyPc'
                ScriptName   = 'Test'
            }
            . "$here\$sut" @Params
        } | Should throw
    }
}

查找-Waldo.ps1

Param (
    [Parameter(Mandatory)]
    [String]$ComputerName,
    [String]$ScriptName
)

Function Find-Waldo {
    [CmdletBinding()]
    Param (
        [String]$FilePath
    )

    'Do something'
}

每次我尝试assert结果或只是运行测试,它会提示我输入ComputerName参数而不是测试失败。

我在这里错过了一些非常明显的东西吗?有没有办法测试强制参数是否存在?


根据 Mathias 的评论,您无法真正测试是否缺少强制参数,因为 PowerShell 会提示输入而不是抛出错误。根据他从 Pester 团队链接到的评论 https://github.com/PowerShell/PowerShell/issues/2408#issuecomment-251140889你可以用Get-Command测试脚本中的强制参数设置(假设它是该变量设置的唯一参数属性)

((Get-Command "$here\$sut").Parameters['ComputerName'].Attributes.Mandatory | Should Be $true

另一种选择是在这种情况下不使用强制参数,而是使用一个执行以下操作的脚本块:Throw作为参数的默认值:

Param (
    [String]$ComputerName = $(Throw '-ComputerName is required'),
    [String]$ScriptName
)

如果脚本始终用作自动化流程的一部分(而不是通过用户执行),这可能是首选,因为它允许您控制/捕获其行为并避免其在执行过程中卡住。然后您可以按照最初的建议测试脚本:

Describe 'Mandatory paramters' {
    it  'ComputerName' {
        {
            $Params = @{
                #ComputerName = 'MyPc'
                ScriptName   = 'Test'
            }
            . "$here\$sut" @Params
        } | Should throw '-ComputerName is required'
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Pester 测试强制参数 的相关文章

随机推荐

  • 为什么 REPL 将 clojure.core/doc 视为 var?

    我正在尝试使用 Clojure 获取文档doc函数 但无法从 REPL 中识别它 我正在使用 Emacs 和 SLIME 以下序列描述了发生的情况 错误消息紧随每行之后 gaidica core gt doc first Evaluatio
  • 使用 StringBuilder 连接

    从资源的角度来看 使用 StringBuilder 来连接两个字符串是否合理 或者是否存在使 StringBuilder 高效的最小连接操作 the String class is preferable for a concatenatio
  • 如何在神经网络中实现与假阳性与假阴性平衡相关的事实?

    我有一个是 否分类问题 其中误报比假阴性 有没有办法将这一事实应用到神经网络中 特别是在 MATLAB 的神经网络工具箱中 你需要的是一个成本敏感元分类器 元分类器可与任意分类器配合使用 无论是 ANN SVM 还是任何其他分类器 这可以通
  • 使用 php 调整图像大小

    我正在使用一个简洁的小 php 脚本来调整图像大小以适合 300x300 像素的正方形 同时保持纵横比 我从那里得到了脚本here http www white hat web design co uk blog resizing imag
  • 如何在 AndroidrelativeLayout 中拖放视图

    我制作了自己的拖放功能 我想用一个RelativeLayout 但这似乎效果不太好 一开始我可以告诉每个人View我想通过将其设置在下方来拖动它应该在的位置View before 但是当我想要拖动一个视图时 它下面的所有其他视图也会移动 因
  • 安装 VS 2012 Ultimate 期间出现 .NET 4.5 致命错误

    当我尝试安装时VS 2012 终极版 on Windows 7 32 位 SP1 但它给了我下一个错误 Microsoft NET Framework 4 5 安装期间出现致命错误 我的安装日志 我的 vslog cab 文件 我尝试独立安
  • jQuery 标准和最佳实践 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 POJO 生成 Map

    我有一个 POJO 和一个 当前尚未构建 将返回它的列表的类 我想自动生成 POJO 作为地图访问所需的代码 这是一个好主意吗 是否可以自动执行 我是否需要为每个我想以这种方式处理的 POJO 手动执行此操作 谢谢 安迪 您可以使用Comm
  • 聚合初始化,将成员指针设置为相同的结构成员

    是否可以使用聚合初始化来制作指针aptr指向a这是同一组织的成员struct struct S int a int aptr int main S s a 3 aptr a point aptr to a return 0 问题是针对双方的
  • IDEA 插件:PersistentStateComponent 不持久化 xml

    我无法让我的插件保持其状态 文件 configProvider xml 永远不会被创建 也不会 State注释有任何效果 显然 这是plugin xml中的相关部分
  • AppBar 与其他元素重叠

    我开始使用 React Material UI 并且对 CSS 等也很陌生 我有一个带有 APPBar 的简单页面布局 不幸的是 这个 AppBar 与本应位于其下方的元素重叠 我找到了这个答案 AppBar Material UI 问题
  • 在 Python 中使用 Mechanize 时出现解析错误

    我尝试在 Dell Kace 票务页面上选择一个表单 但收到解析错误 我正在用 python 编程并一直在使用 mechanize 我能够成功登录该网站 我读到你也许可以使用像 Beautiful soup 这样的 html 清理器来解决这
  • numpy 用 nan 填充数组,却得到奇怪的浮点数

    我正在尝试用以下内容填充数组np nan import numpy as np print np version version 1 10 2 combine lambda real theo np vstack theo np pad r
  • Xcode Swift 包管理器错误 - 找不到存储库

    我找不到任何与此相关的问题 但我已经遇到过这个问题两次 基本上 当我尝试通过 SPM 添加新包时 有时会收到以下错误 The repository could not be found Make sure a valid repositor
  • 计算机视觉:Opencv 计算大圆内的小圆

    Here is the image on which i have been working on 目标是检测大圆圈内的小圆圈 currently what i have done is converted the image to gra
  • 热部署 Java EAR 以最大限度地减少或消除服务器上应用程序的停机时间?

    我听说这就是 JavaRebel 所做的事情 但是还有其他好方法来部署新版本的 EAR 同时允许用户在以前的版本上保持活动状态吗 我们使用 JBoss 作为应用程序服务器 这不是 JavaRebel 所做的 JavaRebel 根据描述 热
  • 实体框架错误:“在当前工作区中找不到为 FunctionImport 指定的容器‘XXXX’。”

    我正在执行这个 EntityConnection entityConnection EntityConnection context Connection EntityCommand command entityConnection Cre
  • 奇怪的 std::bad_alloc

    据我所知 抛出 std bad alloc 的原因有以下三个 该进程请求的内存超过了可以提供的内存 地址空间过于碎片化 无法满足对大块连续内存的请求 堆管理数据结构已损坏 我们的代码遇到了 std bad alloc 但上述原因似乎都不适用
  • 在 symfony 4 中使用未定义常量 XML_PI_NODE

    我在 php7 2 中遇到此错误 我正在使用 symfony 4 Warning Use of undefined constant XML PI NODE assumed XML PI NODE this will throw an Er
  • 使用 Pester 测试强制参数

    我正在尝试找出如何对缺少的参数进行 Pester 测试 查找 Waldo Tests ps1 here Split Path Parent MyInvocation MyCommand Path sut Split Path Leaf My