React总结篇之八_单元测试
一、单元测试的原则
从不同的角度,可以将测试划分为如下不同的种类:
单元测试是一种自动化测试,测试代码和被测的对象非常相关,比如测试React组件的代码就和测试jQuery的插件的代码完全不是一回事。
单元测试代码一般都由编写对应功能代码的开发者来编写,开发者提交的单元测试代码应该保持一定的覆盖率,而且必须永远能够运行通过。可以说,单元测试是保证代码质量的第一道防线。
开发者应该注意:
首先,即使单元测试覆盖率达到100%,也不表示程序是没有bug的;
另外,程序架构的可测试性非常重要,需要架构能把程序拆分成足够小到方便测试的部分,只要每个小的部分被验证能够正确的各司其职,组合起来能够完成整体功能,那么开发者编写的单元测试就可以专注于测试各个小的部分就行,这就是更高的可测试性。
二、单元测试环境搭建
单元测试框架单元测试代码组织辅助工具单元测试框架常见的是以下两种:用Mocha测试框架,但是Mocha并没有断言库,所以往往还要配合Chai断言库来使用,也就是Mocha+Chai的组合。使用React的本家Facebook出品的Jest,Jest自带了断言等功能,相当于包含了Mocha和Chai的功能,不过Jest和Chai并不一致。
create-react-app创建的应用中自带了Jest库,Jest会自动在当前目录下寻找满足下列任一条件的JavaScript文件作为单元测试代码来执行:
文件名以.test.js为后缀的代码文件;存于test目录下的代码文件单元测试代码组织单元测试代码的最小单位是测试用例,每一个测试用例考验的是被测试对象在某一特定场景下是否有正确的行为。在Jest框架下,每个测试用例用一个it函数代表,it函数的第一个参数是一个字符串,代表的是测试用例名称,第二个参数是一个函数,包含的就是实际的测试用例的过程。一个很简单的单元测试用例代码如下:
it(’should return object when invoked',()=>{
//增加断言语句
});
组织多个it函数实例,即测试套件。
在Jest中用describe函数描述测试套件,一个测试套件的代码如下:
describe('actions',()=>{
it('should return object when invoked',()=>{});
//可以有更多的it函数调用
})
describe函数包含与it函数一样的参数,两者主要的区别就是describe可以包含it或者另一个describe函数调用,但是it却不能。
describe中有如下特殊函数可以帮助重用代码:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。