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

powershell - 嵌套模块中的问题模拟

1. 在上面的标题中提供问题的一般摘要

2. 描述你的环境

3. 预期行为

预计将调用模拟函数,更多信息如下。

4.当前行为

我正在尝试模拟嵌套模块中的函数。文件结构是这样的:

我在 NestedModule1.psm1 中运行一个函数,该函数调用 NestedModule2.psm1 中的一个函数。我希望 NestedModule2.psm1 中的函数返回一个错误代码(在我们端定义为'99'),所以我尝试使用它来模拟它

我希望这个模拟函数会被调用,所以我使用下面的函数来检查:

从这个功能我收到回来RuntimeException: You did not declare a mock of the NestedModule2_function Command.

我原以为它只被调用了一次,但似乎错误是说我根本没有模拟该函数,或者至少没有正确模拟它。我还尝试删除 Assert-MockCalled 并查看它是否运行,并且它使用非模拟函数。

我们之前已经让模拟函数与非嵌套函数一起工作,但运气不佳。根据 Pester 的 README,我确实尝试确保根模块至少为“*.psm1”。

5. 可能的解决方案

我试图查看一些其他关于模拟和模拟嵌套模块的开放问题,https://github.com/pester/Pester/issues/204。但是,我无法获得任何可以让代码使用它的东西。

6. 背景

我无法有效地使用 Pester 来测试我的 PowerShell 代码。

相关 Github 问题在此处打开:https ://github.com/pester/Pester/issues/1017

0 投票
1 回答
738 浏览

powershell - 模拟未调用 ParameterFilter (Pester)

在此处输入图像描述

我有一个字符串数组 $ServerNames,它有两个元素:“ServerName1”和“ServerName2”。然后我有一个相应的模拟:

没有过滤器的模拟被调用。有过滤器的没有。如果我删除过滤器较少的模拟,则实际调用 Get-ADComputer 命令行开关。为什么过滤后的模拟不会启动?

仅供参考,我尝试了 $server_names[0] 而不是将它们插入字符串中。

0 投票
1 回答
499 浏览

pester - Pester - XML 文件的代码覆盖率输出不起作用

使用上面的脚本,我试图将代码覆盖率输出导出到 out.xml 但它没有被导出

0 投票
2 回答
1891 浏览

pester - 如何使用 Pester 模拟模块不可用的 cmdlet?

我正在尝试为我的 Azure 自动化运行手册编写 Pester 测试。Runbook 脚本使用Get-AutomationVariablecmdlet,我试图通过以下方式模拟它:

导致错误

CommandNotFoundException:术语“Get-AutomationVariable”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。

检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

-ModuleName参数的使用似乎不合适,因为我是从脚本而不是模块调用该方法。尝试提供存根模块会导致抛出相同的错误。

0 投票
1 回答
285 浏览

unit-testing - 如何防止 Pester Mocked Read-Host 在代码覆盖期间提示输入

我有一个 Pester 测试,我在其中模拟了我的函数的 Read-Host 调用,它遵循此问题中的格式:

如何在 Pester 测试中模拟 Read-Host?

使用这种格式并直接调用测试时,我的测试运行良好。但是,当我使用 Invoke-Pester "MyTestFile" -CodeCoverage "MyFileUnderTest" 运行包含我的测试的文件时,系统会提示我为我的测试输入 Read-Host 值。

我的意图是测试将自动运行,而无需输入 Read-Host 值。直接调用测试(当前有效)和使用 CodeCoverage 命令调用我的测试文件时都会出现这种情况。

有谁知道实现这一目标的方法?

编辑:

对于我收到的第一条评论,我已经查看了 Pester 的文档,包括此链接https://github.com/pester/Pester/wiki/Unit-Testing-within-Modules。但是,我还没有看到 Pester 关于使用 Read-Host 的任何官方文档,并且使用了我在问题顶部的 StackOverflow 链接中找到的解决方案。

模块 Test-Foo 函数的源代码:

0 投票
1 回答
327 浏览

powershell - 即使捕获到异常,Pester 也无法通过测试

我有一个专门处理异常并忽略它的实用程序函数,但是当用 Pester 测试它时,测试失败,显示已经捕获和处理的异常。我是否遗漏了什么,或者这是 Pester 中的错误?

此代码重现了该问题:

预期结果:测试通过

实际结果: 测试失败:

0 投票
1 回答
313 浏览

powershell - 如何正确纠缠测试 Import-Clixml

所以首先我需要声明我对 Pester 很陌生,可能没有正确编写我的测试或者没有正确理解它的所有功能。

所以背景是我想用 Pester 自动化我的 PowerShell 模块,并且到目前为止已经编写了一些测试。

我的模块的一部分是将配置内容保存在 clixml 文件中。我想编写一组测试以确保保存和获取配置按预期工作。

基本上我有一个功能来保存配置文件和一个检索它。我的 Pester 测试如下所示:

现在我尝试了该it块的几种变体:

即使我将匹配值更改为不正确的值,Pester 也总是返回通过的测试。Pester 在所有情况下都会这样做。因此,出于某种原因,Pester 没有正确限定这些值并且总是返回一个肯定的结果。

所以我想知道我做错了什么。显然,如果值确实匹配,Pester 应该通过测试,但是当它们不匹配时它应该失败。

0 投票
4 回答
1611 浏览

arrays - 如何在 Pester 中将两个数组与自定义对象进行比较

objects我们正在努力让 Pester 测试失败或通过,具体取决于array.

测试.ps1

我们似乎无法做到这一点。我们是否使用了错误的 CmdLets?还是有另一种检查方法?有时array也只是另一个对象的属性。因此需要进行深入比较。

0 投票
1 回答
267 浏览

powershell - 纠缠自定义错误文本

有谁知道 Pester 是否支持自定义错误文本?

假设我有以下测试:

Get-HelloWorld如果返回“Hello World”以外的另一个字符串,有没有办法可以设置一些自定义错误消息?

谢谢

0 投票
1 回答
356 浏览

powershell - 如何正确测试模拟 CmdLet 的 ErrorVariable 值?

我们正在尝试在测试中检查ErrorVariableof中的值。但是由于某种原因,没有实例化。Invoke-CommandPester-ErrorVariable

即使添加[CmdletBinding()]选项,它仍然没有填充。我们在这里缺少什么?