質問の最後に: C# で Moq を使用してインデクサーを設定する 、誰かが私が抱えている問題を強調したという問題がありました。しかし、解決策は見つかりませんでした。
It.IsAny<string>
具体的には、ジェネリックをキーのマッチャーとして使用し、 を介して値を設定しようとしていますIt.IsAny<object>
。インデックス経由でアクセスして値を設定すると、一致せず、コールバック メソッドにアクセスしません。そのため、単体テストは失敗しています。
var stateTable = new HashTable;
var httpSession = new Mock<HttpSessionStateBase>();
//works via httpSession.Add(key, value);
httpSession.Setup(x => x.Add(It.IsAny<string>(), It.IsAny<object>()))
.Callback((string index, object value) => {
var i = index;
var v = value;
stateData[i] = v;
});
//does not work via httpSession[key] = value;
httpSession.SetupSet(x => x[It.IsAny<string>()] = It.IsAny<object>())
.Callback( (string index, object value) => {
var i = index;
var v = value;
stateData[i] = v;
});
Moq 4.0.10827 を使用しています