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

unit-testing - Powershell Azure Pester 测试

下面是一个简单的函数,它只是创建一个资源组并导出数据。我正在尝试学习单元测试,但我似乎无法弄清楚。

是否可以提供测试模拟数据?我可以测试输出文件是否可以工作吗?

这是我使用 Pester 进行测试的可怕尝试。出于某种原因,测试实际上是在做,而不是把它当作测试。我只是困惑:(。

0 投票
1 回答
346 浏览

unit-testing - 简单的 Powershell Pester 测试不适用于 $false

我写了一个非常简单的函数,叫做“Check-RegValueExists”,当直接从命令提示符执行时,它的工作原理如下

输出以下内容

这些都是正确的结果。

我的纠缠测试是

然而,只有第一个测试通过其他两个失败,如下

我什至复制并粘贴了第一个测试并仅修改了要确认的字符串,但仍然失败。是否存在语法错误或其他问题?

0 投票
1 回答
226 浏览

unit-testing - 纠缠重置测试数据

这是关于 Pester 中测试数据的范围。我正在测试一个函数Add-HashTableIfNotPresent,它检查哈希表中是否存在一个键,如果它不存在,则添加它,否则它返回链接到该键的值。

我有 2It个块用于我的纠缠测试,用于检查 2 个场景 - 密钥存在和密钥不存在。我期待$ht为每个It块重新创建,但如果我交换我的 2 Its的顺序则不是这样,Returns existing entry when passed existing key因为$ht.count仍然是 3。

有没有办法$ht为每个测试重置或者我需要在It块内定义它?

被测功能:

测试代码:

0 投票
1 回答
406 浏览

powershell - 使用 PSUseDeclaredVarsMoreThanAssignment 进行 Pester 测试

如果在DescribePSPester 脚本的块中声明了变量,并且在It块中使用了该变量,则 PSScriptAnalyzer 无法识别该变量的用法。

我如何必须声明变量以消除警告,或者我必须如何应用Diagnostics.CodeAnalysis.SuppressMessage规则PSUseDeclaredVarsMoreThanAssignment来抑制该单一声明的警告?

0 投票
1 回答
305 浏览

powershell - 安装 SCCM 操作系统补丁的 Pester 测试

我有一个有效的 PowerShell 脚本,用于安装当前显示可在 SCCM 客户端中安装的任何补丁,但我发现无法构建一个纠缠测试来验证脚本是否按预期工作而无需实际安装补丁。

是否有一个虚拟补丁以某种方式创建、安装、测试,然后在纠缠测试结束时卸载?我不知道这是否可能。

安装可用补丁的脚本:

0 投票
1 回答
363 浏览

powershell - 由于脚本阻塞,无法达到 100% 的 Pester 代码覆盖率

大家好,

由于脚本块,我的纠缠没有达到 100% 的代码覆盖率,我一直在苦苦挣扎。我一直在研究和阅读文章,但没有成功,我决定向你们寻求帮助。:)

我要描述的部分代码包含一个脚本块,稍后将提供给 cmdlet Invoke-Command。下面的示例代码:

我在 Pester 上所做的是我在我的 Describe 块(Get-Statistics)中创建了一个自定义函数,它基本上是脚本块的内部,每当我将 Invoke-Command 模拟为 Get-Statistics 时都会调用它。我的 Pester 成功了,但代码覆盖率并没有给我 100%。你们能告诉我如何做到这一点吗?我需要改变我的测试吗?谢谢你

0 投票
1 回答
1092 浏览

powershell - 在 Visual Studio 中运行 Pester 测试时无法加载 PowerShell 模块

我已经创建了一个 PowerShell 测试脚本,Common.tests.ps1使用 Pester 针对Common.ps1同一目录中的 PowerShell 脚本中的某些函数,。

在同一目录中还有一个TestInitializer.ps1脚本,它使用该模块在Dynamics CRM实例Microsoft.Xrm.Data.PowerShell中创建和获取记录。

从 Visual Studio 运行 PowerShell 测试脚本时,测试在测试资源管理器中失败并显示以下消息:

CommandNotFoundException:无法加载模块“Microsoft.Xrm.Data.PowerShell”。有关详细信息,请运行“导入模块 Microsoft.Xrm.Data.PowerShell”。

但是,从 PowerShell ISE 运行相同的测试时,运行没有问题。这似乎好像没有为 Visual Studio 运行的实例安装模块(我在运行时确认了这一点,Get-Module -ListAvailable并看到输出不包含Microsoft.Xrm.Data.PowerShell用于 Visual Studio 测试的模块),尽管即使是像Import-Module Microsoft.Xrm.Data.PowerShell -Global -Forcedon'这样的显式调用t 似乎在使用 Visual Studio 执行脚本期间加载模块。

这是Common.test.ps1

片段来自TestInitializer.ps1

我可以将测试设计为使用 Mock 而不是实际尝试创建/读取记录,尽管无法加载外部模块并在 Visual Studio 中运行会受到限制。

0 投票
2 回答
444 浏览

multithreading - 如何使用 PowerShell 多线程并使用 Pester Mocks 进行单元测试

我正在尝试在 Powershell 中进行简单的并行操作。我正在使用 PoshRSJobs 进行多线程处理,尽管我也尝试过 Invoke-Parallel 处理同样的问题。我需要在作业的脚本主体中调用我自己的几个函数,但这不允许我模拟这些函数以进行单元测试(它们最终成为原始的非模拟函数)。在这一点上,我只是试图断言它们已被正确调用次数。

这是原始类(导入模块的功能无关紧要 - 实际实现当前正在返回测试字符串)......

这是Pester测试...

这是目前 Pester 测试的输出...

所以最终,我正在寻找一种在 PowerShell 中进行并行操作的方法,并且仍然能够对它们进行模拟和单元测试。

0 投票
1 回答
262 浏览

unit-testing - 纠缠和测试枚举

如何enum使用 Powershell 单元测试框架Pester进行测试?

我从应试者那里得到的似乎是一个字符串,而不是我的正确enum.


测试结果

测试导致错误。我得到的是Apple而不是我的 enum [FruitType]::Apple

水果.psm1

此处的 Powershell 模块使枚举“公共”并导出一个方法,该方法使用我的 Fruit 枚举返回一个对象。

Fruit.Tests.ps1

Pester 测试调用using以获取枚举,调用被测试者并检查结果。

0 投票
1 回答
596 浏览

unit-testing - 由于局部变量变量错误,无法通过 Pester 测试

我很难使用调用命令为特定的 Powershell 函数创建一个纠缠器,并且在脚本块上有一个 $using 变量。每当我运行我的测试时,它总是会返回一个错误。示例功能和测试如下:

功能:

测试:

我的测试错误将返回A 无法检索使用变量。using 变量只能与 Invoke-Command 一起使用....即使我嘲笑 Get-Computer 不返回任何内容,我也无法理解此错误?还是我需要更改模拟 Get-Computer 的方式才能通过测试?

先感谢您