问题标签 [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.
unit-testing - 单元测试 ParameterBindingValidationException
有人可以告诉我用 Pester 测试不可为空的字符串参数的最佳方法吗?
ParameterBindingValidationException
当我将一个空字符串传递给我的 PowerShell 模块时,我收到一个。
我期待能够在我的测试中做到这一点:
或这个:
powershell - 如何测试解析的参数集?
我正在尝试编写一个基本的 Pester 测试来检查已解析参数集的“高级”函数:
谢谢。任何建议都将受到高度赞赏,因为我对 Pester 完全陌生。...在豪华和编码方面也没有好多少:D
powershell - 自身功能的输出测试
我有一个返回配置文件内容的函数:
现在我在 Pester 中进行了一个测试,它只是检查函数是否真的返回了一些东西:
现在,无论我做什么来输出配置设置,我似乎都无法通过 Pester 的测试,即使功能正常运行也是如此。
[-] 应该返回一个值 18ms
预期:值不能为空
Get-ConfigSettings -path .\settings-test.ps1 -Rollback "1" | 不应该是 NullOrEmpty
我在这里错过了什么吗?那我该如何正确处理函数输出呢?
powershell - 从闭包创建的 Pester Mock 中的空列表
为什么下面的代码:
导致错误:
作为参考,跟踪输出给出:
当我使用以下内容时,它可以工作:
我假设这与模拟中的脚本块的执行方式有关?
powershell - 为什么 Pester 不模拟带有两个参数的 cmdlet?
我正在尝试进行一些 Pester 测试,但出现奇怪的错误“找不到位置参数”(对于私有 Python cmdlet),这是 Pester 的限制还是我下面的代码有问题?
TestModule.psm1
代码:
该功能的纠缠代码:
当我执行测试代码时,出现此错误:
unit-testing - Pester Mock 不适用于使用脚本块的 Invoke-Command
我有一个控制台记录器
然后我有包装函数,它通过动态加载它来调用它
另一个直接调用它的包装函数
添加记录器以进行动态调用
现在我有几个 Pester 测试
测试 2. 总是失败。我通过创建一个假记录器函数来解决问题,而不是使用模拟和设置一些全局变量来验证/断言在我的测试中动态加载和调用预期函数是有效的。让 Mock 在这种情况下工作会很好,而不是写那些愚蠢的假货!
任何想法它将如何工作或者它根本不受纠缠的支持?
PS:如果按顺序复制,所有代码都有效
unit-testing - Azure cmdlet 调用上的 Pester 模拟错误 PSInvalidCastException
我需要从模块内的 PowerShell 函数中“纠缠测试”2 个 Azure cmdlet、Get-AzureNetworkSecurityGroup和Set-AzureNetworkSecurityRule,如下所示:
参数 $NsgName, $NsgRule 不是那么重要,问题是我在模拟 Set-AzureNetworkSecurityRule 时收到错误,例如:
错误说:
很清楚发生了什么,问题是我不知道如何模拟INetworkSecurityGroup类型的对象。如果模拟两个 Azure cmdlet,我最初的期望是没有问题。
我也尝试过使用-MockWith 模拟Set- AzureNetworkSecurityRule :
没有运气。
谁能指出我正确的方向?
提前致谢
更新完整的描述语句
第一次尝试
关联的 PS 模块函数调用:
第二次尝试,另一个不起作用的 PS 功能实现:
第三次尝试
unit-testing - Pester:并非所有模拟函数都被拦截
我有许多模块,包括ModuleMain和ModuleSql。模块之间存在相互依赖关系,因此 ModuleMain 中的Main-Function使用 ModuleSql 中的 4 个函数:
我创建了一个Function-Main1.tests.ps1文件来测试 Function-Main1。起初我使用InModuleScope
但后来切换到使用参数指定每个模拟的模块-ModuleName
。
当我运行这个测试时,我得到以下结果:
请注意以下事项:
- 我没有导入定义了-Sql函数的 ModuleSql,因为无论如何我都是在模拟它们。
- 我观察到/发现我需要设置为定义Main-Function
-ModuleName
的模块,而不是定义 SQL 函数(我试图模拟)的模块。 - 我玩过
InModuleScope
and-ModuleName
,例如将一个或另一个设置为ModuleSQL,但主要是让事情变得更糟。
通过在其他模拟函数中添加 Verbose 输出,我已经确认New-SqlConnection
和Close-SqlConnection
都被拦截了,但Invoke-SqlStoredProc
并Invoke-SqlQuery
没有。
Invoke-Sql*
深入探索,我可以看到(模拟的)函数引发了以下异常:错误:“从'System.Boolean'到'System.Data.SqlClient.SqlConnection'的无效转换。” 这是我在调用这些函数的真实版本时所期望的行为,但我期望模拟版本会忽略参数类型。
为什么 Pester 只拦截我的 4 个函数中的 2 个?
unit-testing - 为什么VS2015中的TestExplorer加载Pester模块失败?
我安装了适用于 Visual Studio 2015 的 Powershell 工具,然后在 VS2015 的 Powershell 项目中创建了一个 tests.ps1 文件。测试资源管理器识别声明的测试,但是当我尝试运行测试时,我得到这个:“结果消息:无法加载 Pester 模块。未加载指定的模块“Pester”,因为在任何模块目录中都找不到有效的模块文件。”
我发现我的电脑中没有 Pester,我从 GitHub 下载它,然后将文件夹添加到 $env:PSModulePath。Powershell 识别模块,但无法导入它,所以我将文件夹从其原始位置移动到:c:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\ 现在任何 powershell 控制台都可以导入模块:ISE,Powershell控制台,VS2015中的Powershell交互窗口。
然后我尝试再次运行测试,我不断收到相同的消息。
powershell - 为什么 Pester 不使用陷阱捕获错误
我想知道为什么在运行此脚本时会出现以下行为。我在 PowerShell ISE(v4 主机)中加载了脚本并加载了 Pester 模块。我按 F5 运行脚本。
然后我得到以下输出:
问题
为什么trap{}
最终测试中显然没有运行?