我读过很多关于单元测试的文章。 大多数文章都说我们不应该在测试中使用多个模拟对象,但我不明白为什么。 有时,我们在测试中确实需要多个模拟对象。
根据上下文,您可以在单元测试中拥有多个模拟。
但是我认为“文章”可能暗示的是
您应该根据需要添加尽可能多的模拟来隔离您的测试类。您需要为每个不应成为测试一部分的依赖项进行模拟。
有时,为了简单起见,您在测试中将两个或三个类放在一起,因为它们构建了类似组件的东西并且高度耦合。其他一切都应该被嘲笑。
我知道这种“最佳实践”只有一个模拟,但也不理解它。在我们的单元测试中,我们有很多模拟,一些环境模拟是由我编写的测试框架设置的(例如TransactionService,SecurityService,SessionService)。只有一件事需要考虑,正如 Gishu 在他的回答中已经提到的那样,许多模拟表明高度依赖。太多的时候就由你自己考虑了。我们有很多小接口,在测试中需要很多mock。
要扭转你的答案,你应该不在以下情况下模拟依赖关系:
我不确定您指的是哪些文章,但我通常为被测类的每个依赖项都有一个模拟对象。
我们正在向遗留代码添加测试,通常有 10 到 15 个模拟用于 20 到 25 行测试。 我自己认为这些测试是有价值的,而不是毫无价值的,但每个测试都有自己的价值。