请记住这个问题的答案Settings variable values in a Moq Callback() call,这就是我理解的方式(左右我认为)我可以推迟执行Returns
,我无法让它发挥作用。
this.mock = new Mock<ICriteria>();
this.mock
.As<IRuleProcessor<Input, Output>>()
.Setup(m => m.Process(It.IsAny<Input>()))
.Returns((Input input) => new Output
{
ExecutionStatus = executionStatus
});
上述代码在[TestInitialize]
中执行,executionStatus
的定义如下:
private RuleExecutionStatus executionStatus = RuleExecutionStatus.Success;
最后,executionStatus
被修改为:
executionStatus = RuleExecutionStatus.FailedValidation;
在测试中我在执行SUT之前执行。现在,当执行SUT的内部方法时,它会在上面的模拟设置上调用Process
。但是,它没有抓住修改后的值,它只抓取初始值。
请记住,如果我设置错误,我不会感到惊讶。
如何在课堂上为一个测试修改此状态?所有其他测试都需要成功状态。
是否与.As<IRuleProcessor<Input, Output>>()
有关?当我必须在继承的接口上设置方法时,这样的延迟执行不起作用吗?