我已成功使用以下内容重置测试之间的期望:
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());
}
任何想法我做错了什么?
谢谢!
答案 0 :(得分:0)
对于不同的测试用例,您似乎正在使用相同的模拟 你有什么特别的理由在测试之间分享模拟吗?
如果您为每个测试实例化新的模拟对象,我认为您的问题应该会消失(在Setup()
方法中。
<强>更新强>
请阅读好评论,以便在测试here之间共享数据。
<强> UPDATE2 强>
如果您使用基类来设置模拟,那么我建议在基类中设置特定的方法(例如Init()
)。此方法应使用属性[SetUp]
进行标记
结果Init()
将在每次测试之前运行。每次测试都会使用新鲜的模拟器。所以你不需要重置现有的模拟。