Comment vérifier que cette méthode n’a pas été appelée dans Moq?

Comment puis-je vérifier que cette méthode n’a pas été appelée dans Moq ?

A-t-il quelque chose comme AssertWasNotCalled?

UPDATE: à partir de la version 3.0, une nouvelle syntaxe peut être utilisée:

mock.Verify(foo => foo.Execute("ping"), Times.Never()); 

MISE À JOUR : Depuis la version 3, vérifiez la mise à jour de la question ci-dessus ou la réponse de Dann ci-dessous.

Soit, faites votre simulacre ssortingct afin qu’il échoue si vous appelez une méthode à laquelle vous ne vous attendez pas

 new Mock(MockBehavior.Ssortingct) 

Ou, si vous voulez que votre maquette soit lâche, utilisez le .Throws (Exception)

 var m = new Mock(MockBehavior.Loose); m.Expect(a => a.moo()).Throws(new Exception("Shouldn't be called.")); 

Exécutez une vérification après le test qui a un ensemble Times.Never enum. par exemple

 _mock.Object.DoSomething() _mock.Verify(service => service.ShouldntBeCalled(),Times.Never()); 

Volé de: la réponse de John Foster à la question “Besoin d’aide pour mieux comprendre Moq”

Une des choses que vous pourriez vouloir tester est que la méthode de paiement ne soit pas appelée quand une personne âgée de plus de 65 ans est passée dans la méthode

 [Test] public void Someone_over_65_does_not_pay_a_pension_consortingbution() { var mockPensionService = new Mock(); var person = new Person("test", 66); var calc = new PensionCalculator(mockPensionService.Object); calc.PayPensionConsortingbution(person); mockPensionService.Verify(ps => ps.Pay(It.IsAny()), Times.Never()); } 

Cela ne fonctionne pas dans les versions récentes de Moq (depuis au moins 3.1), il devrait être spécifié dans la méthode Verify , comme indiqué dans la réponse.

En fait, il est préférable de spécifier .AtMost(0) après l’instruction Returns.

 var m = new Mock(); m.Expect(x => x.Forbidden()).Returns("foo").AtMost(0); 

Bien que les «lancers» fonctionnent aussi, AtMost(0) est plus expressif à AtMost(0) .

Utilisez .AtMostOnce ();

Après le test réel, appelez à nouveau la méthode. Si elle lève une exception, elle a été appelée.