and*_*cfc 15 c# unit-testing moq mocking stubbing
我目前正在使用Moq框架编写单元测试和模拟依赖项.在这样做的过程中,我创建了一个Mock,如下所示:
Mock<ITraceProvider> traceProviderMock = new Mock<ITraceProvider>();
traceProviderMock.Setup(x => x.GetTraceContext(It.IsAny<string>())).Returns("test");
ITraceProvider traceObj = traceProviderMock.Object;
Run Code Online (Sandbox Code Playgroud)
但是后来我想稍微修改模拟的行为,所以我Setup再次调用Mock对象:
traceProviderMock.Setup(x => x.GetTracer(It.IsAny<string>())).Returns("tracer");
Run Code Online (Sandbox Code Playgroud)
现在没有traceProviderMock.Object再次调用,这个新的模拟行为会反映出来traceObj吗?这就是我想要的情况.
这肯定适用于该Verify()方法,但似乎不适用于该Setup方法.
我想这样做的原因是因为我使用模拟依赖项在Test Setup方法中构建了一个完整的依赖图.我只想更改我的特定测试的一个模拟依赖项的行为.后续测试也会将自己的特化应用于模拟的依赖项.
and*_*cfc 17
这种行为实际上和我预期的一样.由于我的测试存在问题,我实际上并没有调用新模拟的方法.这误导我相信嘲弄框架没有表现.
总而言之,您可以在调用.Object之后更改模拟,并且更改将反映在模拟对象实例中.
| 归档时间: |
|
| 查看次数: |
1312 次 |
| 最近记录: |