我正在尝试为使用拼写校正器的一段代码设置单元测试。我已经正确注入了代码依赖项,因此在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
委托。