Dans le code suivant, Test1 réussit mais Test2 échoue:Comportement étrange dans la « Vérifier » méthode Moq
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());
}
Ce comportement est en fait tout à fait utile, mais je ne peux pas comprendre pourquoi ça fonctionne comme ça. Il semble que Test2 devrait aussi réussir!
La seule idée que j'ai est qu'en quelque sorte Verify est assez intelligent pour savoir que "myMethod" a été appelé à partir d'un cas de test différent et donc "ne compte pas"? BTW, même si je supprime l'appel de Verify dans Test1, la même chose se produit (Test2 échoue).
+1. Je suggère de ne pas créer un simulacre de vérification dans TestFixtureSetUp. – TrueWill