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

后端 未结 3 819
滥情空心
滥情空心 2020-12-08 03:21

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

3条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-08 04:21

    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.

提交回复
热议问题