0
在下面的設計例子中,我想在foo.psm1上寫一個Foo的單元測試。爲了做到這一點,我必須模擬foo.psm1導入的bar.psm1中的函數Bar。Powershell:如何模擬嵌套模塊功能
但是,模擬不起作用,因爲foo.psm1只能識別它導入的Bar的版本。我怎樣才能做到這一點?
**使所有文件.ps1解決此問題,但我不想使用.ps1文件,因爲我需要模塊附帶的所有元數據和發現。
foo_test.ps1
import-module 'C:\DEV\powershell\mocks\foo.psm1'
function Bar {
write-host 'BarMock'
}
Foo #outputs Bar not BarMock
foo.psm1
import-module 'C:\DEV\powershell\mocks\bar.psm1'
function Foo {
Bar
}
bar.psm1
function Bar {
write-host 'Bar'
}
任何幫助深表感謝。
**更新 - 解決方案由史蒂夫Murawski提供(任何錯誤歸因於我)。
您需要將導入模塊的內容作爲字符串獲取,並使用Invoke-Expression導入它,以便將所有內容導入到全局範圍中。
新foo_test.ps1
$contents = gc 'C:\DEV\powershell\mocks\foo.psm1' | out-string
invoke-expression $contents
function Bar {
write-host 'BarMock'
}
Foo
是的,我已經嘗試刪除並強制導入foo_test.ps1。它沒有解決問題。 –