`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
实例的方法,您不必再创建模拟存储库的实例。
要执行您需要的操作,请使用 AssertWasCalled
和 AssertWasNotCalled
。
mock.Stub(x => x.Foo()).Return("blah");
unitUnderTest.DoIt();
mock.AssertWasCalled(x => x.Bar());
你能帮我解决以下问题吗?
我正在使用 C#、MSTest 和 Moq 进行单元测试项目,如果我想验证是否调用了方法,我使用:
RepositoryMock.Verify(x=>x.method(int value).Times.Once());
我的问题是:是否会评估 RepositoryMock.Verify
以检查我的测试是通过还是失败?我的意思是,就像一个断言,如果从未调用该方法,那么测试将失败或发生什么情况,如果从未调用该方法,最终结果是什么?
Verify
是旧语法的一部分,即 AAA 之前的语法。在过去,您在 "record mode" 中设置模拟,然后 运行 在 "replay mode" 中设置测试,然后通过调用 Verify
验证所有期望。如果你没有调用它,则没有验证期望(还有一个 VerifyAll
一次验证所有模拟)。
您不再需要 AAA 中的它。这是 MockRepository
实例的方法,您不必再创建模拟存储库的实例。
要执行您需要的操作,请使用 AssertWasCalled
和 AssertWasNotCalled
。
mock.Stub(x => x.Foo()).Return("blah");
unitUnderTest.DoIt();
mock.AssertWasCalled(x => x.Bar());