2017-09-08 60 views
0

我有一個問題,我的代碼中我應該模擬某個函數(Get-State)返回一個複雜的值,以便$StartState可以有一個值。我的級別的Powershell似乎無法創建自定義對象。如何模擬函數返回一個複雜的值與Pester

$State = Get-State 

    $StartState = $State.Where({$_.Name -eq "State_SUccess"}).state 

我試圖用一個自定義的對象與此代碼嘲笑Get-State功能

$State = [PSCustomObject]@{Name = "State_SUccess"} 
    if($State.Name -eq "State_SUccess""){ 
    $State = [PSCustomObject]@{Name = @{state = 1}} 
    } 
    else 
    { 
    } 
    $BatchState.statusName.state 

但它不會做的伎倆,在$StartState仍沒有價值,因爲也許我要創建一個自定義方法在哪裏?

回答

0

我沒有太多的信息對你打算做的,但我認爲這是這樣的:

更改第一部分:

$State = Get-State 

$StartState = $State.Where({$_.Name -eq "State_SUccess"}) 

和:

$State = [PSCustomObject]@{Name = "State_SUccess"} 
if($State.Name -eq "State_SUccess") 
{ 
    $State = [PSCustomObject]@{Name = @{state = 1}} 
} 
else 
{ 
} 
$StartState.Name 

這是一個很奇怪的做法... 也許你需要的是這樣的:

$State = @{Name = "State_SUccess"} 
if($State.Name -eq "State_SUccess") 
{ 
    $State['State'] = 1 
} 
else 
{ 
} 
$StartState 
+0

Hi Bert, 感謝您的回覆。我不能更改 $ State.Where({$ _。Name -eq「State_SUccess」})。state,因爲它已經是Pester測試的函數的一部分。任何其他線索或建議該怎麼辦? –

相關問題