我正在尝试为使用拼写校正器的一段代码设置单元测试。我已经正确注入了代码依赖项,因此在Rhinomocks中设置存根不是问题,但是我为测试创建的文本块长达50个字,所以我宁愿没有50行代码看起来像这样:

spellingCorrector.Stub(x => x.CorrectWord("the")).Return("the");
spellingCorrector.Stub(x => x.CorrectWord("boy")).Return("boy");
spellingCorrector.Stub(x => x.CorrectWord("ran")).Return("ran");


就单元测试而言,我认为假设单词拼写正确是可以的。有没有办法让Rhinomocks仅仅遵循有关返回的规则,其效果如下:

spellingCorrector.Stub(x => x.CorrectWord(y)).Return(y);

最佳答案

您可以使用IgnoreArguments()方法:

spellingCorrector
    .Stub(x => x.CorrectWord(null))
    .IgnoreArguments()
    .Return(y);


这样,无论将什么值传递给CorrectWord方法,它都将返回y



更新:

发表评论后,您会更加清楚:

Func<string, string> captureArg = arg => arg;
spellingCorrector.Stub(x => x.CorrectWord(null)).IgnoreArguments().Do(captureArg);


这将使用作为参数传递的任何值作为返回值。如果您需要对该返回值执行一些转换,请调整captureArg委托。

10-06 11:18