2
我已經成功用於以下,以測試之間重置預期工作:RhinoMock.BackToRecord似乎並不例外
MyMock.BackToRecord(BackToRecordOptions.Expectations);
MyMock.Replay();
然而,在情況下第二次測試嘗試扔在嘲笑異常方法,這似乎並沒有工作:
[SetUp]
public void Setup()
{
//reset expectations for each test
MockRestQuestionClient.BackToRecord(BackToRecordOptions.Expectations);
MockRestQuestionClient.Replay();
}
[Test]
public void Test1() {
MyMock.Expect(t => t.Something()).Returns(someObject);
}
[Test]
public void Test2() {
//this works when run individually, but fails if run after Test1
MyMock.Expect(t => t.Something()).Throw(new Exception());
}
任何想法我做錯了什麼?
謝謝!
似乎好的代碼重新使用我。我們有一個基礎測試類,它可以設置所有相關測試使用的所有模擬(這適用於Moq,但Moq缺少一些功能)。除了這個特殊情況之外,這對RhinoMocks來說也很合適。 – sydneyos
這是好的重新使用*在多個測試中設置所有嘲笑*的代碼。但是,在多個測試中重用*相同的模擬實例並不好。看到我的建議如何在答案的更新中做到這一點。 –
我接受有保留的答案。我不覺得有任何方法有令人信服的論據。關於不重新使用mock的理由是因爲mock不起作用(我認爲)它們應該不是一個有說服力的基礎來說明「應該」做什麼。嘲笑應該可以重新設置,imo,事實上,他們除了在這種奇怪的情況下。所以,我原來的問題仍然沒有得到答覆,也許只有Ayende才能回答。 – sydneyos