在以下代码中,Test1 成功但 Test2 失败:
protected Mock<IMyInterface> MyMock { get; set; }
[SetUp]
public virtual void Initialize()
{
MyMock = new Mock<IMyInterface>();
}
[Test]
void Test1()
{
// ... code that causes IMyIntervace.myMethod to be called once
MyMock.Verify(x=> x.myMethod(), Times.Once());
}
[Test]
void Test2()
{
MyMock.Verify(x=> x.myMethod(), Times.Once());
}
这种行为实际上非常有用,但我不明白为什么它会这样工作。看来Test2也应该成功!
我唯一的想法是,以某种方式验证足够聪明,知道“myMethod”是从不同的测试用例调用的,所以它“不算数”?
顺便说一句,即使我在 Test1 中删除了对验证的调用,也会发生同样的事情(Test2 失败)。