如何要求 RhinoMock 正确期望 Lambda 表达式

发布于 2024-10-17 16:26:47 字数 639 浏览 2 评论 0原文

我正在使用 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 Interview 被设置为 null。 subtestId 值是正确的。

还有其他方法可以做到这一点吗?

I am using Rhino Mocks and I'm not sure how to mock a call that takes a lambda expression. Here's the situation:

Actual Method:

public void MyMethod (int subtestId) {
var interview = _repository.FindOne(t => t.Survey.Subtests.SingleOrDefault(x => x.Id == subtestId) != null);
...content elided...
}

Mock attempt:

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

When I run this and step through, var interview in MyMethod gets set to null. The subtestId value is correct.

Is there another way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

望笑 2024-10-24 16:26:47

这可能不是确切的答案,但最终对我有用的是使用 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);

This is maybe not the answer exactly, but what ended up working for me was to use IgnoreArguments() like so:

   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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文