问题标签 [pester]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3010 浏览

unit-testing - 单元测试 ParameterBindingValidationException

有人可以告诉我用 Pester 测试不可为空的字符串参数的最佳方法吗?

ParameterBindingValidationException当我将一个空字符串传递给我的 PowerShell 模块时,我收到一个。

我期待能够在我的测试中做到这一点:

或这个:

0 投票
3 回答
412 浏览

powershell - 如何测试解析的参数集?

我正在尝试编写一个基本的 Pester 测试来检查已解析参数集的“高级”函数:

谢谢。任何建议都将受到高度赞赏,因为我对 Pester 完全陌生。...在豪华和编码方面也没有好多少:D

0 投票
1 回答
353 浏览

powershell - 自身功能的输出测试

我有一个返回配置文件内容的函数:

现在我在 Pester 中进行了一个测试,它只是检查函数是否真的返回了一些东西:

现在,无论我做什么来输出配置设置,我似乎都无法通过 Pester 的测试,即使功能正常运行也是如此。

[-] 应该返回一个值 18ms
预期:值不能为空
Get-ConfigSettings -path .\settings-test.ps1 -Rollback "1" | 不应该是 NullOrEmpty

我在这里错过了什么吗?那我该如何正确处理函数输出呢?

0 投票
1 回答
251 浏览

powershell - 从闭包创建的 Pester Mock 中的空列表

为什么下面的代码:

导致错误:

作为参考,跟踪输出给出:

当我使用以下内容时,它可以工作:

我假设这与模拟中的脚本块的执行方式有关?

0 投票
1 回答
1061 浏览

powershell - 为什么 Pester 不模拟带有两个参数的 cmdlet?

我正在尝试进行一些 Pester 测试,但出现奇怪的错误“找不到位置参数”(对于私有 Python cmdlet),这是 Pester 的限制还是我下面的代码有问题?

TestModule.psm1代码:

该功能的纠缠代码:

当我执行测试代码时,出现此错误:

0 投票
1 回答
1960 浏览

unit-testing - Pester Mock 不适用于使用脚本块的 Invoke-Command

我有一个控制台记录器

然后我有包装函数,它通过动态加载它来调用它

另一个直接调用它的包装函数

添加记录器以进行动态调用

现在我有几个 Pester 测试

测试 2. 总是失败。我通过创建一个假记录器函数来解决问题,而不是使用模拟和设置一些全局变量来验证/断言在我的测试中动态加载和调用预期函数是有效的。让 Mock 在这种情况下工作会很好,而不是写那些愚蠢的假货!

任何想法它将如何工作或者它根本不受纠缠的支持?

PS:如果按顺序复制,所有代码都有效

0 投票
1 回答
497 浏览

unit-testing - Azure cmdlet 调用上的 Pester 模拟错误 PSInvalidCastException

我需要从模块内的 PowerShell 函数中“纠缠测试”2 个 Azure cmdlet、Get-AzureNetworkSecurityGroupSet-AzureNetworkSecurityRule,如下所示:

参数 $NsgName, $NsgRule 不是那么重要,问题是我在模拟 Set-AzureNetworkSecurityRule 时收到错误,例如:

错误说:

很清楚发生了什么,问题是我不知道如何模拟INetworkSecurityGroup类型的对象。如果模拟两个 Azure cmdlet,我最初的期望是没有问题。

我也尝试过使用-MockWith 模拟Set- AzureNetworkSecurityRule :

没有运气。

谁能指出我正确的方向?
提前致谢

更新完整的描述语句

第一次尝试

关联的 PS 模块函数调用:

第二次尝试,另一个不起作用的 PS 功能实现:

第三次尝试

0 投票
1 回答
1849 浏览

unit-testing - Pester:并非所有模拟函数都被拦截

我有许多模块,包括ModuleMainModuleSql。模块之间存在相互依赖关系,因此 ModuleMain 中的Main-Function使用 ModuleSql 中的 4 个函数:

我创建了一个Function-Main1.tests.ps1文件来测试 Function-Main1。起初我使用InModuleScope但后来切换到使用参数指定每个模拟的模块-ModuleName

当我运行这个测试时,我得到以下结果:

请注意以下事项:

  1. 我没有导入定义了-Sql函数的 ModuleSql,因为无论如何我都是在模拟它们。
  2. 我观察到/发现我需要设置为定义Main-Function-ModuleName的模块,而不是定义 SQL 函数(我试图模拟)的模块。
  3. 我玩过InModuleScopeand -ModuleName,例如将一个或另一个设置为ModuleSQL,但主要是让事情变得更糟。

通过在其他模拟函数中添加 Verbose 输出,我已经确认New-SqlConnectionClose-SqlConnection都被拦截了,但Invoke-SqlStoredProcInvoke-SqlQuery没有。

Invoke-Sql*深入探索,我可以看到(模拟的)函数引发了以下异常:错误:“从'System.Boolean'到'System.Data.SqlClient.SqlConnection'的无效转换。” 我在调用这些函数的真实版本时所期望的行为,但我期望模拟版本会忽略参数类型。

为什么 Pester 只拦截我的 4 个函数中的 2 个?

0 投票
1 回答
528 浏览

unit-testing - 为什么VS2015中的TestExplorer加载Pester模块失败?

我安装了适用于 Visual Studio 2015 的 Powershell 工具,然后在 VS2015 的 Powershell 项目中创建了一个 tests.ps1 文件。测试资源管理器识别声明的测试,但是当我尝试运行测试时,我得到这个:“结果消息:无法加载 Pester 模块。未加载指定的模块“Pester”,因为在任何模块目录中都找不到有效的模块文件。”

VS2015

我发现我的电脑中没有 Pester,我从 GitHub 下载它,然后将文件夹添加到 $env:PSModulePath。Powershell 识别模块,但无法导入它,所以我将文件夹从其原始位置移动到:c:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\ 现在任何 powershell 控制台都可以导入模块:ISE,Powershell控制台,VS2015中的Powershell交互窗口。

然后我尝试再次运行测试,我不断收到相同的消息。

0 投票
2 回答
1135 浏览

powershell - 为什么 Pester 不使用陷阱捕获错误

我想知道为什么在运行此脚本时会出现以下行为。我在 PowerShell ISE(v4 主机)中加载了脚本并加载了 Pester 模块。我按 F5 运行脚本。

然后我得到以下输出:

问题

为什么trap{}最终测试中显然没有运行?