`RepositoryMock.Verify` 在做什么

What is `RepositoryMock.Verify` doing

你能帮我解决以下问题吗?

我正在使用 C#、MSTest 和 Moq 进行单元测试项目,如果我想验证是否调用了方法,我使用:

RepositoryMock.Verify(x=>x.method(int value).Times.Once());

我的问题是:是否会评估 RepositoryMock.Verify 以检查我的测试是通过还是失败?我的意思是,就像一个断言,如果从未调用该方法,那么测试将失败或发生什么情况,如果从未调用该方法,最终结果是什么?

Verify 是旧语法的一部分,即 AAA 之前的语法。在过去,您在 "record mode" 中设置模拟,然后 运行 在 "replay mode" 中设置测试,然后通过调用 Verify 验证所有期望。如果你没有调用它,则没有验证期望(还有一个 VerifyAll 一次验证所有模拟)。

您不再需要 AAA 中的它。这是 MockRepository 实例的方法,您不必再创建模拟存储库的实例。

要执行您需要的操作,请使用 AssertWasCalledAssertWasNotCalled

mock.Stub(x => x.Foo()).Return("blah");

unitUnderTest.DoIt();

mock.AssertWasCalled(x => x.Bar());