问题标签 [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.
powershell - 如何将输出重定向到 Pester xml 文件?
我想知道如何使用 PowerShell 命令(例如Out-Host
或Write-Debug
.
我希望这样做,以便我可以观察 appveyor 测试页面上的输出。
正如您在上图中看到的那样,纠缠测试没有 Std OUT 选项。
在寻找答案时,我偶然发现了这个github 问题,它描述了我想要做的确切事情,但没有提供解决方案。
我能够开始工作的唯一解决方法是强制纠缠测试写入控制台使用Out-Host
,以便我可以交叉引用测试的输出。
unit-testing - Pester 可以模拟异常吗?
我正在处理一些 Pester 测试用例,并且正在查看 CodeCoverage 结果。在大多数代码包含 try/catch 的测试用例中,我们对 catch 的覆盖率为 0%。这是一个例子:
模拟 Get-WmiObject 返回值来测试 $true 条件很容易。
我已经尝试了许多想法来模拟 Get-WmiObject 的异常,但在每种情况下,异常都会传递到控制台,而不是被 Pester 捕获并通过测试。下面是我想出的最好的,但它仍然不起作用。
该测试结果:
有什么方法可以模拟 Get-WmiObject 抛出的异常,以便我们可以让 Pester 陷入困境并最终实现 100% 的代码覆盖率?
我当前的测试代码寻找异常
上面的代码结果如下:
测试 $false 会返回:
powershell - Microsoft.Azure.Commands.Dns.DnsRecordBase[] 类型的 Mock New-AzureRmDnsRecordConfig 返回值
我正在尝试为使用New-AzureRmDnsRecordSet
. DnsRecords
on 参数New-AzureRmDnsRecordSet
验证我传入的类型Microsoft.Azure.Commands.Dns.DnsRecordBase[]
是New-AzureRmDnsRecordConfig
. 问题是,我似乎无法将任何东西转换为该 DnsRecordBase 类型。
这是一个显示我的问题的虚拟脚本:
输出:
我已经尝试了所有代替“1.2.3.4”的方法......整数,字符串,哈希表,数组,System.Object,$null
我也不能只运行New-AzureRmDnsRecordConfig
以获取真实对象,因为该命令行开关需要我运行 Login-AzureRmAccount。这是一个更大的脚本的一部分,我真的只是想模拟这些来测试脚本中的其他内容。
我尝试使用 Pester 的新 CMDLET New-MockObject
,但出现此错误:
代码:
powershell - 使用 Pester 测试强制参数
我试图弄清楚如何让 Pester 测试缺少的参数:
查找-Waldo.Tests.ps1
查找-Waldo.ps1
每次我尝试assert
结果或只是运行测试时,它都会提示我输入ComputerName
参数而不是测试失败。
我在这里错过了一些非常明显的东西吗?有没有办法测试强制参数的存在?
powershell - 如何正确模拟我的函数以使用 Pester 返回自定义属性?
我对 PowerShell 尤其是 Pester 测试有点陌生。我似乎无法为我正在进行 Pester 测试的功能重新创建场景。
这是代码:
我已经模拟Get-Status
返回 true 以便代码路径进入if
块内,但是结果对于$State.Progress
.
就代码路径而言,我的测试总是会进入默认块。我尝试创建自定义对象$State = [PSCustomObject]@{Progress = 0}
无济于事。
这是我的 Pester 测试的一部分:
powershell - 使用 Pester 测试 PowerShell AMSI
我正在编写 Pester 测试来验证 Windows 计算机的配置。我需要的测试之一是验证 PowerShell AMSI 是否正常工作。
有一个 AMSI 测试字符串可用于验证功能。我创建了以下测试。
如果我运行测试,AMSI 运行良好,以至于没有执行完整的上下文块,即没有执行测试并且没有报告成功。
我收到"Error occurred in Context block" In Filename.Tests.ps1:420 Character:36 + Context 'Configure PowerShell' { + ~ The Script contains malicious data and was blocked by anti malware.
(翻译文本。原文可能略有不同。)
取而代之的是错误,我希望执行上下文并返回“测试成功”以引发错误。
有什么想法可以处理这个问题或测试 AMSI 吗?
automation - PESTER - 我可以将它用于 powershell 工作流程吗?
朋友们,我正在使用 powershell 自动化一些与基础设施相关的东西,并将其转换为工作流并在 SMA(服务管理自动化)中运行。
假设我必须自动化一些 linux 和 windows 机器存储添加,我创建 1 个 main.ps1 工作流并调用两个子工作流的 windows.ps1 和 linux.ps1,每个 1 用于 windows 和 linux 存储添加。我必须将这 3 个文件放入 SMA 并运行它们。在此之前,我想测试整个自动化功能。
据我所知,pester 最适合单元测试,即每个 3 个文件分别使用 pester 进行测试。
我的问题是,我可以在 main.ps1 文件中使用 pester 并在 SMA 中测试工作流程吗?如果没有,您是否为此建议任何最好的开源工具?
谢谢 !
powershell - 您可以在 Testdrive 中创建一个复杂的 CSV 文件吗?
我只想问是否可以在 Testdrive 中创建一个复杂的 csv 文件来为函数创建 Pester 测试?从某种意义上说,它有 13 个标头并且没有空值吗?
powershell - PowerShell 路径的解析方式因使用时间而异
我正在研究一个 PowerShell 模块,我的一个测试中的路径解析表现得非常奇怪。
当前文件夹结构如下所示:
表现怪异的测试是Remove-ICDCrawler.tests.ps1
. 文件的开头和相关部分如下所示:
当它运行时,点源对Get-ICDCrawler
线路正常工作,但不适用于Remove-ICDCrawler
. 这是出现的错误消息:
这已经够直截了当了。ISPS
路径中的文件夹过多。如果我ISPS
从测试的第 4 行删除其中一个文件夹并重试,它会完美运行。问题是文件Get-ICDCrawler.ps1
和Remove-ICDCrawler.ps1
文件都存储在同一个目录中,据我所知,路径应该解析为正确的目录。正如我所提到的,ISPS
从第 4 行的路径中删除是可行的,但这与我所知道的关于 PowerShell 的一切背道而驰。有谁知道为什么会这样?
code-coverage - Invoke-Pester -CodeCoverage 在测试模块功能时声称代码覆盖率为 0%
我为dbatools编写了一个名为New-DbaSqlConnectionStringBuilder的函数。我为它写了单元测试。我知道这些单元测试涵盖了大部分功能。我使用以下命令得到 0% 的代码覆盖率报告。
调用-Pester .\tests\New-DbaSqlConnectionStringBuilder.Tests.ps1 -CodeCoverage .\functions\New-DbaSqlConnectionStringBuilder.ps1
下面的精简输出:
要获取此版本的代码:
我究竟做错了什么?