Я пытаюсь использовать Moq 3.x, он работает великолепно. Однако у меня есть проблема, которую я не могу понять, как ее решить. Учитывая
public interface ITestSpec
{
bool Run(Action<string, string> onIncorrectResponse);
}
Я пытаюсь сделать следующее:
var passingTestSpec = new Mock<ITestSpec>();
passingTestSpec
.Setup(m => m.Run(null))
.Returns(true);
Action<string, string> fakeAction =
(expected, actual) => { throw new Exception("Should not run"); };
Assert.IsTrue(passingTestSpec.Object.Run(fakeAction));
Моя проблема в том, что при любом вызове PassingTestSpec.Object.Run (... некоторое действие ...) возвращается false. Кажется, что библиотека Moq пытается сопоставить действие с аргументом, который я передал Run () в вызове Setup (), и терпит неудачу. На самом деле не имеет значения, какое действие я выполняю в вызове Run () ... он по-прежнему возвращает false.
Есть идеи?
[Править] Я только что что-то обнаружил; если я заменю строку настройки на
.Setup(m => m.Run(fakeAction))
тест пройден. Однако я не могу знать, с каким действием будет вызываться метод .Run (), поэтому это не решение. Кто-нибудь знает It.IsAny эквивалент для действий?