Unit testing VisualStudio没有';t在Pester单元测试执行时应用Powershell模块更改
我在Visual Studio 2015中创建了一个“Powershell模块项目”,并为该模块编写了一些函数。当我对Unit testing VisualStudio没有';t在Pester单元测试执行时应用Powershell模块更改,unit-testing,powershell,visual-studio-2015,visual-studio-2017,pester,Unit Testing,Powershell,Visual Studio 2015,Visual Studio 2017,Pester,我在Visual Studio 2015中创建了一个“Powershell模块项目”,并为该模块编写了一些函数。当我对.psm1文件进行更改并尝试使用Pester框架(.test.ps1文件)对这些更改进行单元测试时,新的更改不会在测试期间应用。这发生在Visual Studio 2015和Visual Studio 2017 我试过: “清洁解决方案”、“重建解决方案”和“构建解决方案” “卸载项目”和“重新加载项目” “关闭解决方案”和“打开解决方案” 到目前为止,我找到的唯一解决方案是
.psm1
文件进行更改并尝试使用Pester框架(.test.ps1
文件)对这些更改进行单元测试时,新的更改不会在测试期间应用。这发生在Visual Studio 2015和Visual Studio 2017
我试过:
- “清洁解决方案”、“重建解决方案”和“构建解决方案”
- “卸载项目”和“重新加载项目”
- “关闭解决方案”和“打开解决方案”
此问题可能来自何处,是否有其他解决方案?当您更改已加载的PowerShell模块时,这些更改不会自动应用于当前运行的PowerShell会话,因为该模块已加载到内存中(即使您手动运行
导入模块
,这仍然是正确的,因为PowerShell看到模块已加载,并且不执行任何操作)
解决方法是先使用删除模块
,然后使用导入模块
重新加载模块,或者使用导入模块-强制
您可以将这两种解决方案中的任何一种添加到您的Pester测试文件的顶部,以确保它在测试之前总是重新加载模块。谢谢!现在我明白了为什么会发生这种情况。我决定使用“-Force”,因为“删除模块”在第一次执行时可能会遇到问题(?)。我认为首选
Remove Module
是有原因的,但我从未发现-Force
方法会给我带来任何问题。如果(获取模块){Remove Module}尚未加载错误,您可以执行If(get Module){Remove Module}
来停止抛出错误。