我正在使用Rhino Mocks,我不知道如何模拟一个带有lambda表达式的调用。情况如下:
实际方法:
public void MyMethod (int subtestId) {
var interview = _repository.FindOne(t => t.Survey.Subtests.SingleOrDefault(x => x.Id == subtestId) != null);
...content elided...
}
模拟尝试:
var interview = new Interview();
_repository.Expect(r => r.FindOne(t => t.Survey.Subtests.SingleOrDefault(x => x.Id == subtestId) != null)).Return(interview);
var viewModelRetrieved = _service.MyMethod(subtestId);
当我运行并逐步执行时,MyMethod中的var采访被设置为null。 subtestId值是正确的。
还有其他办法吗?
答案 0 :(得分:0)
这可能会有所帮助,虽然它看起来不漂亮:Rhino Mocks: Can I use Stub() when one of my parameters is Expression>?
答案 1 :(得分:-3)
这可能不是答案,但最终为我工作的是使用IgnoreArguments(),如下所示:
var interview = new Interview();
_repository
.Expect(r => r
.FindOne(t => t.Survey.Subtests.SingleOrDefault(x => x.Id == subtestId) != null))
.IgnoreArguments()
.Return(interview);
var viewModelRetrieved = _service.MyMethod(subtestId);