【发布时间】:2018-09-25 03:02:06
【问题描述】:
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
【问题讨论】:
标签: powershell pester