为库和ava、codecov、travis示例添加很酷的小徽章GitHub许多开源库都会有几个很酷的小徽章,例如:Howweretheseadded?Shields.io首先,这些徽章可以直接去shields.io网站自动生成。例如:是版本分类中的一个图标,选择npm栏填写包名,然后复制到Markdown内容中,会得到类似:直接在.md文件中粘贴即可使用,最后显示此图标。当然还有很多其他的徽章可以选择,但是有些徽章需要一些额外的配置,比如这里的(automaticbuildpass)和(testcoverage)。AVA讲测试覆盖率先有单元测试,本文以ava为例,ava是一个js测试库,强烈推荐使用。1.安装npminitava2。使用示例编写一个test.js文件:importtestfrom'ava'importMemcachedfrom'../lib/memcached';test.before(t=>{constmemcached=newMemcached(['127.0.0.1:11211'],{pool:{max:2,min:0},timeout:5000});t.context.memcached=memcached;});test('memcachedget/set',asynct=>{try{t.计划(3);constkey='testkey';consttestdata='testest\r\n\stese';constr=awaitt.context.memcached.set(key,testdata);(r,'STORED');constg=awaitt.context.memcached.get(key,testdata);t.is(g,testdata);constdr=awaitt.context.memcached.del(key);t.is(dr,'DELETED');}catch(error){t.fail(error.message);}});test('单元测试标题',t=>{t.pass();});说明:ava本身支持es6及以上的很多特性,不需要额外使用babel。test.before是一个钩子,你可以通过上下文向后传递变量并使用它们。test('title',t=>{})函数构建了我们的单元测试。每个测试的名称可以自己定义。使用起来非常方便。多个测试同时执行。如果需要按顺序执行,请使用test.serial()。t.plan()声明每个测试应该有多少次断言。t.is()用于断言判断。t.fail()声明单个测试失败。t.pass()声明单个测试通过。当然,这里只展示了一些用法。更详细的内容参见官方文档。我们有覆盖率的单元测试,但我们还没有测试覆盖率,为此我们需要nyc。npminstall--save-devnycmodifypackage.jsonfile:{"scripts":{"test":"nycava"}}获取测试覆盖率时会生成相关文件,我们可以在.gitignore:.nyc_outputcoverage*忽略它们当我们再次执行npmtest时,它会执行单元测试并获得测试覆盖率。结果类似于:$npmtest>nycava4testspassed--------------|----------|---------|------------|------------|-----------------|文件|%Stmts|%分支|%函数|%行|未覆盖的行#s|------------|------------|------------|---------|------------|-------------------|所有文件|72.07|63.37|79.49|72.07||memcached.js|72.59|64.37|74.19|57.14|100|68|...70,72,73,75,76|------------|------------|----------|------------|------------|--------------------|Codecov测试覆盖率也有,但它只是本地的,我们还不能生成这种徽章。为此,本文选择codecov平台。我们需要用GitHub账号登录codecov,关联我们的repository库。同时,我们需要生成一个令牌token,供后续使用。安装codecov:npminstall--save-devcodecov在package.json文件中添加一个脚本来报告测试覆盖率:{"scripts":{"report-coverage":"nycreport--reporter=text-lcov>coverage。lcov&&codecov"}}向codecov报告测试覆盖率结果需要获得许可。这里的权限需要配置环境变量CODECOV_TOKEN=
