1. 在上面的标题中提供问题的一般摘要
2. 描述你的环境
Pester version : 4.3.1 /usr/local/share/powershell/Modules/Pester/4.3.1/Pester.psm1
PowerShell version : 6.0.1
OS version : Unix 16.7.0.0
3. 预期行为
预计将调用模拟函数,更多信息如下。
4.当前行为
我正在尝试模拟嵌套模块中的函数。文件结构是这样的:
Module
│ Module.psd1
│
└───NestedModule1
│ │ NestedModule1.psm1
│
└───NestedModule2
│ │ NestedModule2.psm1
│
└───NestedModule3
│ │ NestedModule3_1.psm1
│ │ NestedModule3_2.psm1
│ │ NestedModule3_3.psm1
我在 NestedModule1.psm1 中运行一个函数,该函数调用 NestedModule2.psm1 中的一个函数。我希望 NestedModule2.psm1 中的函数返回一个错误代码(在我们端定义为'99'),所以我尝试使用它来模拟它
Mock NestedModule2_function {return "99"} -ModuleName NestedModule1
我希望这个模拟函数会被调用,所以我使用下面的函数来检查:
Assert-MockCalled NestedModule2_function
从这个功能我收到回来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