조롱 프레임 워크로 NSubstitute를 사용하는 동안 메서드가 MSpec에서 호출되었다고 주장하려고합니다. Subject
에는 ExecuteAll()
의 빈 구현이 있습니다. 실패해야하지만 통과합니다!Subject에 구현이없는 경우이 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();
}
다른 어설 션을 사용해 보았지만 지나쳤습니다. 이 자체가 내가 NSubstitute을 제거하고 MOQ로 대체 Execute()
command1.WasToldTo(x => x.Execute());
로 호출하는 것 같다. Execute()
가상화에 대한 오류를 수정 한 후 작동했습니다. NSubstitute가 도청되었거나 오류를 올바르게보고하지 않습니까?
아무 것도 말하지 않고 -1을 주었으므로이 질문을 어떻게 개선 할 것인지 잘 모르겠습니다. 나는 내가 무엇을 시도했는지, 무엇을 성취하려고하는지, 그리고 어떤 코드를 제공했는지에 대해 잘 쓰여진 영어로 설명했다고 믿는다. 내가 뭔가를 놓친다면 알려주세요. 거기에 -1을 던지면 아무에게도 도움이되지 않습니다. – 4imble
귀하의 질문은 실제로 꽤 좋은 것입니다. 제목과 일부 서식을 수정했습니다. 중요한 질문은 NSubstitute가 (비) 가상 메서드를 처리하는 방법이라고 생각합니다! –
고마워, 네 말이 맞아,하지만 그건 처음에는 그게 문제인지 몰랐어. :) 우리가 더 많이 알았으니 이제 그것을 분명히 해줘서 고마워. – 4imble