В конце вопроса: Используя 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