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.