这是必要而又自然的,首先我们要保证自己的基础库的回归测试的自动化(或者少修改),其次在选择开源库的时候,有着测试100%pass的库总会让别人多一点信心不是么?!
一个笔记而已,不必写过多的原因及背景。
简而言之:我想写 es6 语法的基础库,又要确保相应的测试神马的能够正常的 cover 住,而且需要在依赖其他的 es6 语法库的时候能够让测试正常运行,做了一点工作,所以记下笔记以便后续直接用。
库选择
测试库mocha
很正常的选择。
断言库chai
说实话我也没想那么多,mocha
官网用了就直接用了而已,其实本身并不在意是chai
还是jasmine
……
覆盖率nyc
实际上还是istanbul
,nyc
是做了些增强:
- applications that spawn subprocesses.
- ES2015 transforms, via babel-plugin-istanbul, or source-maps.
持续集成Travis CI
覆盖率持续集成coveralls
for coveralls.io
项目中的使用
安装
在进行了必要的项目初始化之后(npm init ?),就可以准备持续集成相关的东西了。
|
|
如果需要 es6 等支持,还需要安装
|
|
cross-env用于跨平台的设置 NODE_ENV=test
选用 preset es2015-node5 的原因则是,测试都是在 node 下进行的,而 node 在原生类被babel编译的类继承时会抛异常,所以使用这个preset。
babel配置
如果安装了,则新增 .babelrc 于根目录,然后配置:
|
|
测试
首先,测试的文件默认都在根目录下的 test 文件夹中,源文件默认在 lib 文件夹中,这时候其实不需要做过多的配置的,只有几个注意点而已:
- test中的文件命名,最好保留源文件名,或用.test.js后缀,以便维护
- 如果过多了,可以考虑源文件名做文件夹,然后 [feature].test.js,.test依然可选
- test中的文件如果是多层,mocha的参数要有 –recursive,去找更深层目录的文件
修改:
|
|
覆盖率
修改:
根目录增加 .nycrc,用于配置nyc
,这是一个json文件
|
|
// 执行
npm run cover
Coverage directory used by tools like istanbul
coverage
.nyc_coverage
.nyc_output
持续集成
for Travis CI…
创建文件 .travis.yml
|
|
对了,package.json的script加一个 coveralls
OK.