Я пытаюсь утверждать, что метод был вызван в MSpec при использовании NSubstitute в качестве насмешливой структуры. Subject
имеет пустую реализацию ExecuteAll()
. Он должен потерпеть неудачу, но он пройдет!Как проходит тест MSpec/NSubstitute, когда объект не имеет реализации?
public class When_told_to_execute_all_it_should_execute_all_commands
: WithSubject<CommandHandler>
{
static AddTaskCommand command1;
static AddTaskCommand command2;
Establish context =() =>
{
command1 = An<AddTaskCommand>();
command2 = An<AddTaskCommand>();
Subject.AcceptCommand(command1);
Subject.AcceptCommand(command2);
};
Because of =() => Subject.ExecuteAll();
It should_have_called_execute_on_command_1 =() => command1.Received().Execute();
It should_have_called_execute_on_command_2 =() => command2.Received().Execute();
}
Я пробовал использовать другое утверждение, но оно тоже проходит! Кажется, что это само по себе ставит под Execute()
command1.WasToldTo(x => x.Execute());
я удалил NSubstitute и заменил его Moq. После исправления ошибки об изготовлении виртуальной машины Execute()
она сработала. Является ли NSubstitute ошибкой или неверным сообщением об ошибках?
Поскольку вы дали мне -1, ничего не сказав, я не уверен, как вы хотите, чтобы я улучшил этот вопрос. По-моему, я объяснил на хорошо написанном английском то, что я пробовал, чего я пытаюсь достичь и предоставил какой-то код. Если я что-то упустил, дайте мне знать. Просто бросать -1 туда не помогает никому. – 4imble
Ваш вопрос на самом деле довольно хороший. Я изменил название и некоторое форматирование. Я думаю, что важным вопросом является то, как NSubstitute обрабатывает этот (не) виртуальный метод! –
Спасибо, ты прав, но я не знал, что это была проблема изначально :). Спасибо, что разъяснил это сейчас, что мы знаем больше. – 4imble