[英]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.