How do I verify a method was called exactly once with Moq?

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.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)