【问题标题】:Issue Mocking in Nested Modules嵌套模块中的问题模拟
【发布时间】: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


    【解决方案1】:

    确保在您的 pester 测试文件中使用 Import-Module 显式导入嵌套模块。

    Import-Module NestedModule1 #necessary for mocks to work, even though this may already be implicitly imported by Module.
    Import-Module NestedModule2
    Import-Module NestedModule3
    Import-Module Module
    
    Mock NestedModule2_function {return "99"} -ModuleName NestedModule1
    
    Describe <test name> {
        <my test block>
    }
    

    我在 Pester 文档中没有找到对此的明确解释,但在我自己的故障排除中发现了它。

    【讨论】:

    • 我在 Windows 上使用 Powershell 5.x 遇到过这种情况,所以我很好奇我的解决方案是否适用于 Unix PS 6.x
    猜你喜欢
    • 2016-05-10
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2015-03-31
    • 2020-01-08
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多