使用Pester模拟[System.IO.Path] :: IsPathRooted()?

时间:2017-03-27 10:01:18

标签: unit-testing powershell testing mocking pester

如何使用Pester模拟[System.IO.Path]::IsPathRooted()?我试过以下但没有运气。

Describe "Configuration" {
    Mock [System.IO.Path]::IsPathRooted {
        return false
    }

    It "should mock rooted Path" {
        [System.IO.Path]::IsPathRooted("C:\a") | Should Be False
    }

1 个答案:

答案 0 :(得分:4)

不幸的是,你的问题的答案简短而简单:

你不能。

根据Pester's Github Issue #72,最好的选择是将方法调用包装在一个单独的函数中并Mock这个函数。

关于这一点有一些讨论,很多人都希望能够模拟.Net方法,但直到现在,我还是找不到任何解决方案。不幸的是,即使覆盖方法(独立于Pester)也不是那么容易。