译者序
在软件开发的世界里,如何对应用程序进行测试来保证其符合预期是至关重要的,开发Vue.js应用程序也不例外。在系统开发过程中,对软件功能进行补充修改,对系统模块进行重构可谓是家常便饭,而这些修改很可能会在无意中影响程序的其他地方,造成未知的问题。从修复软件缺陷的代价的角度来看,缺陷发现或解决得越迟,其修复成本就越高,因此,从软件开发的一开始就编写测试套件会是一个不错的选择。
然而事实上,在实际开发过程中,编写测试代码通常是开发人员不太喜欢的一个环节。大多数情况下,前端开发人员在开发完一项功能之后,只是打开浏览器手动点击,查看效果是否正确,之后就很少对该块代码进行管理。造成这种情况的主要原因有两个:一个是业务繁忙,没有时间进行测试的编写;另一个则是不知道如何正确地编写Vue测试套件。
应用程序中哪些部分应该被优先测试?这些部分应该使用什么方法进行测试?一些特殊场景下的测试问题怎么解决?我们如何从一开始就整合不同的测试技巧,编制一个高效的测试套件?相信很多人都对这些问题感到困惑,幸运的是,Vue核心开发团队成员、Vue Test Utils的核心作者埃德·耶伯格(Edd Yerburgh),通过将日常编写测试时所使用的技巧进行提炼,最终编写了本书,上述问题在本书中都一一得到了解答。译者有幸翻译这本著作,与大家一同探索Vue.js应用程序测试中的奥秘。
本书旨在为Vue应用程序开发者提供程序测试指导,适用于不同能力水平的Vue应用程序开发者。本书通过从零编写Hacker News应用程序测试的方式,详细阐述了Vue.js应用程序在每个开发阶段所适用的测试技巧,完整展示了编制Vue.js应用程序测试套件必备的技能。本书的前两章是对测试Vue.js应用的简单介绍,以及编写Vue.js测试的基础引导;第3~11章和第13章针对Vue.js程序的特性,分别介绍了测试Vue组件输出、events、methods、Vuex、Vue Router以及测试mixin、filter和SSR的方法;第12章和第14章则介绍了常见的快照测试和端到端测试的相关内容。除此之外,书中还对测试中遇到的一些特殊情况进行了描述,例如在第11章中,使用了Date.now方法的函数返回值是在不断变化的,这也就导致了测试无法准确预测该值,作者在演示如何通过mock Date.now方法来解决此特殊情况的同时,也向我们展示了该系列问题的解决思路。读者结合书中实例进行演练,即可迅速掌握相关测试技巧。
本书的前7章由李冬梅翻译,后7章由李宏凯翻译,李宏凯负责全书统稿。为了确保术语翻译的准确性,我们在翻译过程中查阅了大量的资料,以求尽可能详尽准确。不过由于时间和能力有限,书中内容难免存在纰漏,欢迎广大读者以及业内同行批评指正,联系邮箱为Lihk11844@126.com。
本书的出版要感谢很多人,首先我们要感谢张世武,正是他的支持与推荐,译者才有了翻译本书的机会;感谢华章公司的王春华和刘锋编辑,在翻译过程中,译者得到了许多专业的指导与帮助,编辑们的付出确保了本书的高质量出版;感谢我们的同事、朋友,一直支持并帮助我们审校译稿内容;感谢我们的家人,是他们的支持、鼓励与理解,让我们可以腾出更多的业余时间心无旁骛地专心翻译本书。最后,感谢原作者Edd Yerburgh,感谢他为我们带来了如此精彩的Vue测试作品,让我们一览Vue测试的精彩操作!
李宏凯 李冬梅
2019年10月16日