问题标签 [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 回答
704 浏览

powershell - 如何将输出重定向到 Pester xml 文件?

我想知道如何使用 PowerShell 命令(例如Out-HostWrite-Debug.

我希望这样做,以便我可以观察 appveyor 测试页面上的输出。示例应用程序测试页面

正如您在上图中看到的那样,纠缠测试没有 Std OUT 选项。

在寻找答案时,我偶然发现了这个github 问题,它描述了我想要做的确切事情,但没有提供解决方案。

我能够开始工作的唯一解决方法是强制纠缠测试写入控制台使用Out-Host,以便我可以交叉引用测试的输出。

0 投票
2 回答
3485 浏览

unit-testing - Pester 可以模拟异常吗?

我正在处理一些 Pester 测试用例,并且正在查看 CodeCoverage 结果。在大多数代码包含 try/catch 的测试用例中,我们对 catch 的覆盖率为 0%。这是一个例子:

模拟 Get-WmiObject 返回值来测试 $true 条件很容易。

我已经尝试了许多想法来模拟 Get-WmiObject 的异常,但在每种情况下,异常都会传递到控制台,而不是被 Pester 捕获并通过测试。下面是我想出的最好的,但它仍然不起作用。

该测试结果:

有什么方法可以模拟 Get-WmiObject 抛出的异常,以便我们可以让 Pester 陷入困境并最终实现 100% 的代码覆盖率?

我当前的测试代码寻找异常

上面的代码结果如下:

测试 $false 会返回:

0 投票
2 回答
432 浏览

powershell - Microsoft.Azure.Commands.Dns.DnsRecordBase[] 类型的 Mock New-AzureRmDnsRecordConfig 返回值

我正在尝试为使用New-AzureRmDnsRecordSet. DnsRecordson 参数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,但出现此错误:

代码:

0 投票
2 回答
2137 浏览

powershell - 使用 Pester 测试强制参数

我试图弄清楚如何让 Pester 测试缺少的参数:

查找-Waldo.Tests.ps1

查找-Waldo.ps1

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

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

0 投票
1 回答
1741 浏览

powershell - 如何正确模拟我的函数以使用 Pester 返回自定义属性?

我对 PowerShell 尤其是 Pester 测试有点陌生。我似乎无法为我正在进行 Pester 测试的功能重新创建场景。

这是代码:

我已经模拟Get-Status返回 true 以便代码路径进入if块内,但是结果对于$State.Progress.

就代码路径而言,我的测试总是会进入默认块。我尝试创建自定义对象$State = [PSCustomObject]@{Progress = 0}无济于事。

这是我的 Pester 测试的一部分:

0 投票
0 回答
1052 浏览

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 吗?

0 投票
0 回答
116 浏览

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 中测试工作流程吗?如果没有,您是否为此建议任何最好的开源工具?

谢谢 !

0 投票
1 回答
37 浏览

powershell - 您可以在 Testdrive 中创建一个复杂的 CSV 文件吗?

我只想问是否可以在 Testdrive 中创建一个复杂的 csv 文件来为函数创建 Pester 测试?从某种意义上说,它有 13 个标头并且没有空值吗?

0 投票
1 回答
81 浏览

powershell - PowerShell 路径的解析方式因使用时间而异

我正在研究一个 PowerShell 模块,我的一个测试中的路径解析表现得非常奇怪。

当前文件夹结构如下所示:

表现怪异的测试是Remove-ICDCrawler.tests.ps1. 文件的开头和相关部分如下所示:

当它运行时,点源对Get-ICDCrawler线路正常工作,但不适用于Remove-ICDCrawler. 这是出现的错误消息:

这已经够直截了当了。ISPS路径中的文件夹过多。如果我ISPS从测试的第 4 行删除其中一个文件夹并重试,它会完美运行。问题是文件Get-ICDCrawler.ps1Remove-ICDCrawler.ps1文件都存储在同一个目录中,据我所知,路径应该解析为正确的目录。正如我所提到的,ISPS从第 4 行的路径中删除是可行的,但这与我所知道的关于 PowerShell 的一切背道而驰。有谁知道为什么会这样?

0 投票
1 回答
424 浏览

code-coverage - Invoke-Pester -CodeCoverage 在测试模块功能时声称代码覆盖率为 0%

我为dbatools编写了一个名为New-DbaSqlConnectionStringBuilder的函数。我为它写了单元测试。我知道这些单元测试涵盖了大部分功能。我使用以下命令得到 0% 的代码覆盖率报告。

调用-Pester .\tests\New-DbaSqlConnectionStringBuilder.Tests.ps1 -CodeCoverage .\functions\New-DbaSqlConnectionStringBuilder.ps1

下面的精简输出:

要获取此版本的代码:

我究竟做错了什么?