我目前正在使用 Moq 框架编写单元测试和模拟依赖项。为此,我创建了一个像这样的 Mock:
Mock<ITraceProvider> traceProviderMock = new Mock<ITraceProvider>();
traceProviderMock.Setup(x => x.GetTraceContext(It.IsAny<string>())).Returns("test");
ITraceProvider traceObj = traceProviderMock.Object;
但是后来我想稍微修改模拟的行为,所以我Setup
再次调用模拟对象:
traceProviderMock.Setup(x => x.GetTracer(It.IsAny<string>())).Returns("tracer");
现在不用再调用了traceProviderMock.Object
,这种新的模拟行为会反映在traceObj
? 这就是我想要的情况。
这绝对适用于该Verify()
方法,但似乎不适用于该Setup
方法。
我想这样做的原因是因为我使用模拟依赖项在测试设置方法中构建了一个完整的依赖关系图。我只想为我的特定测试更改其中一个模拟依赖项的行为。随后的测试也将他们自己的专业化应用于模拟依赖项。