我理解使用模拟框架,我们可以覆盖对象的行为。这使得测试更容易,更快捷。在生产环境中模拟对象行为可能很好。但问题出现的不仅仅是开发人员嘲笑?最后,功能测试(现实世界测试)向我们展示了通过或失败的原因。那么为什么延长必然?为什么要嘲笑一个对象只是为了发现它甚至没有在生产中工作。为什么要等功能测试人员发现代码不起作用。如果我们没有模拟,而是使用真正的测试,那么我们可以立即找到错误,而不是用嘲笑来取悦自己。这是向我展示的一个论点,它可能是哲学的,但你对嘲弄框架与真实世界单元测试的看法是什么
答案 0 :(得分:3)
好问题。经过十年编写自动化开发人员测试(甚至为我的需求创建一个模拟库),我只能得出结论,使用模拟的单元测试是不是的最佳方式。
相反,编写接受级集成测试对我来说效果更好。当没有简单的方法时,我只会使用模拟。
我怀疑在大多数开发者分享这种观点之前还需要几年的时间。即使在今天,由于缺乏对此类测试的良好工具支持,创建(和运行)“真实世界”集成测试通常比仅仅模拟依赖性更难。通常情况下,更容易“欺骗”并使用模拟创建一系列单元测试,而不是费力地创建真正的测试,以更真实的方式运行代码。