В следующем коде 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 тоже должен пройти успешно!
Единственная идея, которая у меня есть, заключается в том, что Verify каким-то образом достаточно умен, чтобы знать, что «myMethod» был вызван из другого тестового примера, и поэтому он «не считается»?
Кстати, даже если я удалю вызов Verify в Test1, произойдет то же самое (Test2 не пройден).