如何验证使用 Moq 仅调用了一次方法?

How do I verify a method was called exactly once with Moq?(如何验证使用 Moq 仅调用了一次方法?)
本文介绍了如何验证使用 Moq 仅调用了一次方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

如何验证使用 Moq 的方法只调用了一次?Verify()Verifable() 的事情确实令人困惑.

解决方案

你可以使用Times.Once(),或者Times.Exactly(1):p>

mockContext.Verify(x => x.SaveChanges(), Times.Once());mockContext.Verify(x => x.SaveChanges(), Times.Exactly(1));

以下是 Times 类的方法:p>

  • AtLeast - 指定模拟方法的调用次数最少.
  • AtLeastOnce - 指定至少应调用一次模拟方法.
  • AtMost - 指定模拟方法的调用次数最多.
  • AtMostOnce - 指定一个模拟的方法最多应该被调用一次.
  • Between - 指定应在 from 和 to 时间之间调用模拟方法.
  • Exactly - 指定一个模拟方法应该被准确地调用几次.
  • Never - 指定不应调用模拟方法.
  • Once - 指定一个模拟方法应该被调用一次.

记住它们是方法调用;我一直被绊倒,以为它们是属性而忘记了括号.

How do I verify a method was called exactly once with Moq? The Verify() vs. Verifable() thing is really confusing.

解决方案

You can use Times.Once(), or Times.Exactly(1):

mockContext.Verify(x => x.SaveChanges(), Times.Once());
mockContext.Verify(x => x.SaveChanges(), Times.Exactly(1));

Here are the methods on the Times class:

  • AtLeast - Specifies that a mocked method should be invoked times times as minimum.
  • AtLeastOnce - Specifies that a mocked method should be invoked one time as minimum.
  • AtMost - Specifies that a mocked method should be invoked times time as maximum.
  • AtMostOnce - Specifies that a mocked method should be invoked one time as maximum.
  • Between - Specifies that a mocked method should be invoked between from and to times.
  • Exactly - Specifies that a mocked method should be invoked exactly times times.
  • Never - Specifies that a mocked method should not be invoked.
  • Once - Specifies that a mocked method should be invoked exactly one time.

Just remember that they are method calls; I kept getting tripped up, thinking they were properties and forgetting the parentheses.

这篇关于如何验证使用 Moq 仅调用了一次方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How to MOQ an Indexed property(如何最小起订量索引属性)
Mocking generic methods in Moq without specifying T(在 Moq 中模拟泛型方法而不指定 T)
How Moles Isolation framework is implemented?(Moles Isolation 框架是如何实现的?)
Difference between Dependency Injection and Mocking Framework (Ninject vs RhinoMocks or Moq)(依赖注入和模拟框架之间的区别(Ninject vs RhinoMocks 或 Moq))
How to mock Controller.User using moq(如何使用 moq 模拟 Controller.User)
How do I mock a class without an interface?(如何模拟没有接口的类?)