1
這裏有我創建一個模擬的接口IManager。它具有方法犀牛嘲笑,AssertWasCalled與Arg限制
void LogUserWithParams(string maskValue, E_LOG_LEVEL logLevel,
string formatMsg, ref Array args);
我創建了一個測試,以檢查方法調用的參數。
Array logParams = Arg<Array>.Ref(Is.Anything(), new object[0]).Dummy;
manager.AssertWasCalled(man => man.LogUserWithParams(
Arg<string>.Is.Anything,
Arg<E_LOG_LEVEL>.Is.Anything,
Arg<string>.Is.Anything,
ref logParams
)
);
它產生了相當一個奇怪的消息: 參數0,必須使用定義:Arg.Is,Arg.Text或Arg.List
正如你可以看到,所有的參數都是用精氨酸定義。對測試有什麼問題有任何想法?
謝謝,吉米!奇怪的是,你的變種造成的另一個神祕的錯誤: 參數3必須被定義爲:出精氨酸 .OUT(返回值).Dummy 因此,我不得不在最後一個參數更改爲 裁判精氨酸 .OUT(新對象[0])。虛擬 這很好,但沒有給我任何方法來定義這個參數的進一步限制。 –
2012-01-30 09:26:45
@IvanGerken:確實很奇怪。你可以試試我的樣品是否適合你?此外,你使用的是什麼版本的Rhino(3.6這裏)? – 2012-01-30 18:21:25
我試着用我的項目中使用的相同版本的Rhino Mocks 3.6的樣本,它工作正常。我不得不只改變一行:「Array output = new Array();」到「數組輸出=新對象[0];」。我不知道你是如何設法建立你的樣本:) 好吧,可能我偶然發現了一些幾乎不可複製的RM故障。在我的測試中,我模擬了幾十個來自PIA的接口。再次感謝你的幫助! – 2012-01-31 09:18:59