3
我正在使用Rhino.Mocks來測試系統。犀牛嘲笑和無序調用的有序測試
我將檢查調用.LoadConfig和.Backup方法的順序。我需要.LoadConfig成爲第一個。
目前的代碼是這樣的:
var module1 = mocks.Stub<IBackupModule>();
var module2 = mocks.Stub<IBackupModule>();
module1.Expect(x => x.Name).Return("test");
module2.Expect(x => x.Name).Return("test2");
using (mocks.Ordered())
{
module1.Expect(x => x.LoadConfig(null));
module2.Expect(x => x.LoadConfig(null));
module1.Expect(x => x.Backup());
module2.Expect(x => x.Backup());
}
mocks.ReplayAll();
的問題是,這也有一個呼叫.NAME財產,我不感興趣時,它會被稱爲:.LoadConfig之前或之後.Backup - 它只是沒關係。
當我運行此我得到異常:Unordered method call! The expected call is: 'Ordered: { IConfigLoader.LoadConfig(null); }' but was: 'IIdentification.get_Name();'
有沒有辦法來處理這個?
感謝
.Name不會被調用很多次,但是當它被調用時會被改變。它可以在所有.LoadConfigs之前或之前調用.LoadConfig ..但事實上,首先應該運行所有的LoadConfigs,並且只有所有的.Backups不會改變,所以我想測試它。 感謝您的鏈接,它沒有解決問題,但至少我會把所有.Backups和所有.LoadConfigs放入另一個無序塊:) – Shaddix 2010-04-29 04:35:05
好吧,如果您不關心對Name屬性的調用,請嘗試使用.Stub而不是.Expect。然後你的代碼應該可以工作(不需要嵌套)。 – PatrickSteele 2010-04-29 12:28:46