Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing VisualStudio没有';t在Pester单元测试执行时应用Powershell模块更改_Unit Testing_Powershell_Visual Studio 2015_Visual Studio 2017_Pester - Fatal编程技术网

Unit testing VisualStudio没有';t在Pester单元测试执行时应用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 我试过: “清洁解决方案”、“重建解决方案”和“构建解决方案” “卸载项目”和“重新加载项目” “关闭解决方案”和“打开解决方案” 到目前为止,我找到的唯一解决方案是

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

我试过:

  • “清洁解决方案”、“重建解决方案”和“构建解决方案”
  • “卸载项目”和“重新加载项目”
  • “关闭解决方案”和“打开解决方案”
到目前为止,我找到的唯一解决方案是重新打开IDE


此问题可能来自何处,是否有其他解决方案?

当您更改已加载的PowerShell模块时,这些更改不会自动应用于当前运行的PowerShell会话,因为该模块已加载到内存中(即使您手动运行
导入模块
,这仍然是正确的,因为PowerShell看到模块已加载,并且不执行任何操作)

解决方法是先使用
删除模块
,然后使用
导入模块
重新加载模块,或者使用
导入模块-强制


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

谢谢!现在我明白了为什么会发生这种情况。我决定使用“-Force”,因为“删除模块”在第一次执行时可能会遇到问题(?)。我认为首选
Remove Module
是有原因的,但我从未发现
-Force
方法会给我带来任何问题。如果(获取模块){Remove Module}尚未加载错误,您可以执行
If(get Module){Remove Module}
来停止抛出错误。