2016-11-15 6 views
1

Callbackを使用してMOQメソッドからパラメータ値を取得しようとしているときに問題が発生しました。ラムダ式内で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)); 

誰かが私の理由を説明できますか?

+0

uがどのようなエラーが発生していますか?何があり、マイリストですか? – barakcaf

+0

問題を再現する[mcve]を提供します。これ以外の質問は不明瞭なまま残り、閉じます。 – Nkosi

答えて

3

Selectクエリが列挙されていない限り、ラムダ式は実行されません。それがなぜ機能しないように見えるのです。

選択を列挙し、すべてが期待通りに機能するはずです。

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) { ... } 
関連する問題