使用 moq 测试在 void 方法中调用嵌套函数

Test that a nested function is called in a void method with moq

我有一个接口的实现,想覆盖实现中的方法。大多数函数都是无效的并且只做一件事,我想测试是否进行了某个调用但不确定如何使用 mock

FakeService.cs

public FakeService(IRepository<FaketTable> repo)

public virtual void ClearAll()
{
 this.fakeTablerepo.Truncate();
}

我想编写一个测试以确保调用了 Truncate。没有返回任何东西,所以没有什么可以断言的。任何帮助将不胜感激。

断言所需成员是 called/invoked

[TestMethod]
public void ClearAll_Should_Truncate_Repo() {    
    //Arrange
    var mock = new Mock<IRepository<FaketTable>>();

    var subject = new FakeService(mock.Object);

    //Arrange
    subject.ClearAll();

    //Assert
    mock.Verify(_ => _.Truncate(), Times.Once());
}

参考Moq Quickstart以更好地了解如何使用该框架