Moq 回调方法未在 lambda 表达式中命中
Moq callback method not hit within lambda expression
我在尝试使用 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));
谁能解释一下为什么?
除非枚举 Select
查询,否则不会执行 lambda 表达式。这就是它似乎不起作用的原因。
枚举 select,一切都应该按预期工作。
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) { ... }
我在尝试使用 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));
谁能解释一下为什么?
除非枚举 Select
查询,否则不会执行 lambda 表达式。这就是它似乎不起作用的原因。
枚举 select,一切都应该按预期工作。
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) { ... }