【问题标题】:Moq callback method not hit within lambda expressionMoq回调方法未在Lambda表达式中击中
【发布时间】:2017-03-29 15:40:15
【问题描述】:

我在尝试使用 Callback 从 MOQ Method 获取参数值时遇到问题。

// Test 1 - can get parameters in moq method callback - OK
var test = _myService.GetValues(9, 9).ToList();

// Test 2 - can not drill into moq method callback - KO
var test2 = mylist
.Select(x => _myService.GetValues(x.p1, x.p2).ToList());

// with:
var l1 = new list<int>();
var _myService = new Mock<MyService>();

_myService
    .Setup(x => x.GetValues(It.IsAny<int>(), It.IsAny<int>()))
    .Returns(something)
    .Callback<int, int>((a, b) => l1.Add(a));

谁能解释一下为什么?

【问题讨论】:

  • 你遇到了什么错误?什么是东西和我的列表?
  • 提供一个minimal reproducible example 来重现问题,否则问题将仍然不清楚并被关闭。

标签: c# linq unit-testing callback moq


【解决方案1】:

除非枚举Select 查询,否则不会执行 lambda 表达式。这就是为什么它似乎不起作用。

枚举选择,一切都应该按预期工作。

var test2 = mylist
.Select(x => _myService.GetValues(x.p1, x.p2).ToList())
.ToList();

var test2 = mylist
.Select(x => _myService.GetValues(x.p1, x.p2).ToList());
foreach(var x in test2) { ... }

【讨论】:

    猜你喜欢
    • 2011-10-02
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多