RhinoMock.BackToRecord似乎不适用于Exceptions

时间:2012-12-15 01:16:14

标签: nunit rhino-mocks

我已成功使用以下内容重置测试之间的期望:

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());
}

任何想法我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

对于不同的测试用例,您似乎正在使用相同的模拟 你有什么特别的理由在测试之间分享模拟吗?

如果您为每个测试实例化新的模拟对象,我认为您的问题应该会消失(在Setup()方法中。

<强>更新
请阅读好评论,以便在测试here之间共享数据。

<强> UPDATE2
如果您使用基类来设置模拟,那么我建议在基类中设置特定的方法(例如Init())。此方法应使用属性[SetUp]进行标记 结果Init()将在每次测试之前运行。每次测试都会使用新鲜的模拟器。所以你不需要重置现有的模拟。