简体   繁体   English

Moq回调方法未在Lambda表达式内命中

[英]Moq callback method not hit within lambda expression

I have an issue while trying to get parameter values from MOQ Method using Callback . 尝试使用Callback从MOQ方法获取参数值时遇到问题。

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

Can someone explain me why ? 有人可以解释我为什么吗?

Unless the Select query is enumerated the lambda expression is not executed. 除非枚举Select查询,否则不执行lambda表达式。 That is why it appears not to work. 这就是为什么它似乎不起作用的原因。

Enumerate the select and everything should work as expected. 枚举选择,一切应该按预期工作。

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

OR 要么

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM