【问题标题】:Visual Studio doesn't apply Powershell module changes on Pester unit test executionVisual Studio 不会对 Pester 单元测试执行应用 Powershell 模块更改
【发布时间】:2017-06-09 19:10:51
【问题描述】:

我在 Visual Studio 2015 中创建了一个“Powershell 模块项目”,并为该模块编写了一些函数。当我对.psm1 文件进行更改并尝试使用 Pester 框架(.test.ps1 文件)对这些更改进行单元测试时,新更改不会在测试期间应用。这发生在 Visual Studio 2015 和 Visual Studio 2017 中。

我试过了:

  • “清洁解决方案”、“重建解决方案”和“构建解决方案”
  • “卸载项目”和“重新加载项目”
  • “关闭解决方案”和“打开解决方案”

到目前为止,我发现的唯一解决方案是重新打开 IDE。

这个问题可能来自哪里,还有其他解决方案吗?

【问题讨论】:

    标签: unit-testing powershell visual-studio-2015 visual-studio-2017 pester


    【解决方案1】:

    当您更改已加载的 PowerShell 模块时,这些更改不会自动应用于当前正在运行的 PowerShell 会话,因为该模块已加载到内存中(即使您手动运行 Import-Module <modulename> 这仍然适用因为 PowerShell 看到模块已经加载并且什么都不做)。

    解决方法是先使用Remove-Module,然后使用Import-Module 重新加载它,或者使用Import-Module <modulename> -Force

    您可以将这些解决方案中的任何一个添加到 Pester 测试文件的顶部,以确保它始终在测试之前重新加载模块。

    【讨论】:

    • 谢谢!现在我明白为什么会这样了。我决定使用“-Force”,因为“Remove-Module”在第一次执行时可能会遇到问题(?)。
    • 我认为首选Remove-Module 是有原因的,但我从未发现-Force 方法会给我带来任何问题。如果尚未加载,您可以使用If (get-module <modulename>) { remove-module <modulename> } 来阻止引发错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多