我读了这个answer,它告诉Mockery是TDD的反模式。可是等等!我们必须模拟/存根所有依赖项来编写单元测试。在其他情况下,它将是一个集成测试。
答案 0 :(得分:5)
过度使用模拟可以是反模式,而不是嘲弄自己。确实,您需要模拟/存根您的依赖项,但是当您的类具有太多依赖项时,可能需要花费更多时间和精力来模拟和连接所有内容,而不是编写类本身。而且模拟定义非常脆弱且易于破解,这与TDD规则有何不同。
依赖性过多意味着您的类是某种需要重构的god object,或者是某种顶级协调器,它本身没有任何特殊逻辑(只有依赖序列)调用),在这种情况下,我会说它并不是真的需要进行单元测试,当它的所有组件都经过单元测试时(集成测试可以很好地覆盖它,单元测试将模拟地狱而没有任何实际价值)。