我试图断言在使用NSubstitute作为模拟框架时在MSpec中调用了一个方法。 Subject
的空实现为ExecuteAll()
。它应该失败,但它通过了!
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是否有错误或未正确报告错误?
答案 0 :(得分:0)
好吧,在Moq错误地认为该方法不是虚拟的之后我把NSubstitute重新放入其中并且它正在工作。如果我将方法改回非虚拟状态,那么当它不应该再次通过时,它就会通过。
我为NSubstitute创建了一个问题,如果它给出像moq这样的错误会很好。