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