退货不是推迟执行?

时间:2014-05-02 14:28:02

标签: c# .net unit-testing moq

请记住这个问题的答案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>>()有关?当我必须在继承的接口上设置方法时,这样的延迟执行不起作用吗?

0 个答案:

没有答案