当我询问如何使用 nsubstitute 抛出异常时,chat gpt 放下了这一行,var exception = wait Assert.ThrowsAsync(() => _controller.Post(categoryNull));
我删除了它,它仍然工作得很好,如果不是更快的话,关于它应该如何工作以及它的目的是什么的任何线索?
谢谢,祝大家有美好的一天!
单元测试的重点不是测试通过。当代码更改并执行意外操作时,它也必须失败。
你说它在移除后“工作正常”,但实际上,它没有。毕竟,您可以删除所有测试的每一个断言,并且它们都会通过。 “工作正常”的另一半是,您可以更改代码并证明它失败,然后使代码正确(不更改测试),如果它通过了,那么您就很好了。
想象一下这样的测试:
DateTime testDate = MyApp.GetDate();
Assert.That(testDate, Is.Not.Null);
测试通过了,这是一件好事,对吧?嗯,不。如果你尝试让它失败,你就做不到,因为
DateTime
是值类型并且永远不能为 null。所以你的测试每天都会运行,但它永远不会失败,因为你从未证明它可以失败。