У меня есть следующий код в тесте в моем коде. Обратите внимание, что этот тест не был написан мной, код, который он вызывает, также не был написан мной, но я его изменил.Проверка Moq не работает, так как это должно быть
mockedIMessage.Setup(m => m.ScriptMethodInvoker(EnumFunction.MsgFullSetPosition, It.IsAny<Result>())).Returns(1).Verifiable();
var result = GetTestExecutionResult(script);
mockedIMessage.Verify(m => m.ScriptMethodInvoker(EnumFunction.MsgFullSetPosition, It.IsAny<Result>()), Times.Once);
С оригинальным кодом это работает. По моему, это не так - это говорит мне, что ожидаемый призыв к макету был 0 раз, а не тот, который когда-то ожидался.
Однако, когда я выполняю его в режиме отладки, он определенно вызывает этот код и завершает работу без исключения исключения. Таким образом, код работает, но Moq не обнаруживает, что он был вызван.
Этот метод вы называете виртуальным? – Domysee
как вы изменили исходный код? - разместите свои изменения/код ... – Carsten
Функции не являются виртуальными, но теперь они называются лямбда-функциями. Это основное функциональное изменение. Ни у одного из 2000 тестов нет проблем, но это может быть другим, используя Verify. –