N替换行我不明白,即使删除仍然可以正常工作

问题描述 投票:0回答:1

当我询问如何使用 nsubstitute 抛出异常时,chat gpt 放下了这一行,var exception = wait Assert.ThrowsAsync(() => _controller.Post(categoryNull));

我删除了它,它仍然工作得很好,如果不是更快的话,关于它应该如何工作以及它的目的是什么的任何线索?

谢谢,祝大家有美好的一天!

c# api nsubstitute
1个回答
0
投票

单元测试的重点不是测试通过。当代码更改并执行意外操作时,它也必须失败。

你说它在移除后“工作正常”,但实际上,它没有。毕竟,您可以删除所有测试的每一个断言,并且它们都会通过。 “工作正常”的另一半是,您可以更改代码并证明它失败,然后使代码正确(不更改测试),如果它通过了,那么您就很好了。

想象一下这样的测试:

DateTime testDate = MyApp.GetDate();
Assert.That(testDate, Is.Not.Null);

测试通过了,这是一件好事,对吧?嗯,不。如果你尝试让它失败,你就做不到,因为

DateTime
是值类型并且永远不能为 null。所以你的测试每天都会运行,但它永远不会失败,因为你从未证明它可以失败。

© www.soinside.com 2019 - 2024. All rights reserved.