TL;DR——什么是好的单位测试?
其实我是个标题党,单位测试根本没有“艺术”可言。
好的测试来自于好的代码,如不雅说有艺术,那也是代码的艺术。
注:以下“测试”一词,如非特指均为单位测试。
单位测试的好坏袈溱于“单位”而不在“测试”。如不雅一个体系毫无单位可言,那就没法进行单位测试,几乎只能用 Selenium 做大年夜量的E2E测试,其成本和稳定性可想而知。科学的单位划分可以让你摆脱mock,削减依附,进步并行度,不依附实现/易重构,进步测试对营业的覆盖率,以及易学易用,大年夜幅削减测试代码。
最好的单位是返回简单数据构造的函数:函数是最根本的抽象,可大年夜可小,不须要mock,只依附传参。简单数据构造可以判等。 最好的测试对象是Assert.Equal这种的:只是判等。判等轻易,断定产生了什么很难。你可以看到后面对于DOM和异步操作这些和副感化相干的例子都靠判等测试。把感化幂等于数据,拿到数据就必定产生感化,然后再测数据,是一个根本思路。
以上是你以前进修测试第一天就会的内容,所以不存在门槛。
组件测试 (View测试)
为什么不谈TDD?
起首, TDD 肯定是有价值的(价值大年夜小不论)。否决TDD的原因一般比脚绫趋显,对于TDD是否带来正收益不肯定(念头不足)。 某些项目质量请求很高,预算宽绰,TDD势在必行。某些项目比较紧急,或者并非关键或无经久保护筹划,TDD来由就不充分。
为什么谈测试?
因为测试难。
第一难学,第二难写。写测试是个挺艰苦的活,要在测试里精确重演营业要费好大年夜劲,只能靠反复演习。固然这些测试在某些项目中是值得的,然则可能并不合适其他某些项目标根本情况。
测试难,就代表练习成本高,临盆成本也高,收益就降低。要进步采取TDD的念头,与其说服别人,不如大年夜简化测试开端。
(图片来本身 http://t.cn/Rpw9WKg )
为什么谈前端测试?
结语
一般项目都是后端测试覆盖率高,同时后端套路也比较固定。测RESTful API粒度足够大年夜,可以很好地避开实现并且覆盖营业。同时RESTful API一般也正好对应Web框架的Action handler,在这里同时它粒度也足够小,刚好可以直接调用而不启动真的Web server,使得测试最大年夜程度并行化。所以如许测试收益老是最高的,争议很小。
前端不说套路不固定,测不测都有待商讨。因为前端流派不同一,资本不规矩,界线也不清楚,有衬着又有点营业,有导航有请求,很多团队不测试/测Model/测Component/测E2E,八门五花。 但得益于JavaScript本身,前端测试其实是可以异常高效的。
下面你可以看到各类极简极快的测试对象和测试方法,并且它们完全可以 贯穿开辟始终,而非仅给Hello World体量项目预备的 ,你可以在很大年夜的全家桶衔目中完全机械地套用这些办法。(机械也是极限的一部分,你不该该在应用对象过程中面对太多决定,而应当专注于将营业翻译成测试)。
为什么谈React全家桶?
前端大年夜每周刷新一?框架,稳定到了 Angular , React , Vue 3个主流框架并存的阶段。收集中争辩这三个框架盖的楼已经可以绕太阳系了。根据盖的各类大年夜楼看来,如今哪个更优良还没个定论。不过具体到单位测试方面,得益于Virtual DOM本身和模块化设计(不然全家桶白叫了),React全家桶明显更优良些。
测试对象
这是个最通俗的API处理saga,一个account worker看到每个’login/REQUESTED’就会forward给login worker(takeEvery),让它持续管下面的事。然后login worker拿到消息就会去发请求(call),之后傻傻地等着答复,或者是掉足。最后它会发出和结不雅相干的事宜。用这个方法你可以轻松解决猖狂难度的异步问题。
我们本篇中的测试有三个目标: 学得快,写得快,跑得快 。
(图片来本身 http://t.cn/RpwCke3 )
平台上 Selenium , Phantom , Chrome , 包含 Karma 都比较重,最好的测试框架就是直接跑在 node 上的。本着极限编程的原则,我们将测试本身和测试情况尽可能简化,以达到加快测试速度,最终反馈到开辟速度的目标。
- yarn add ava
- ava --watch
如许可以运行并watch测试。改变代码测试结不雅会急速改变,你也可以看到友善的缺点信息,以及expected和actual之间的diff。写下第一段测试:
- import test from 'ava'
- test(t => {
- t.is(1 + 1, 2)
推荐阅读
如不雅说有什么好的博客文┞仿推荐,ibireme 的 iOS 保持界面流畅的技能 这篇堪称业界毒瘤,墙裂推荐反复浏览。这篇文┞仿中讲解了很多的优化点,我本身总结了下收益最大年夜的两个优化点>>>详细阅读
本文标题:React全家桶与前端单元测试艺术
地址:http://www.17bianji.com/lsqh/37291.html
1/2 1