2

我已成功使用以下方法来重置测试之间的期望:

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

任何想法我做错了什么?

谢谢!

4

1 回答 1

0

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

我认为如果您为每个测试实例化新的模拟对象(在Setup()method.

更新请在此处
阅读关于在测试之间共享数据的好评论。

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

于 2012-12-15T19:30:46.957 回答