如何让RhinoMock正确地期望Lambda表达式

时间:2011-02-15 19:41:48

标签: .net lambda rhino-mocks

我正在使用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值是正确的。

还有其他办法吗?

2 个答案:

答案 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);