惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
N
Netflix TechBlog - Medium
F
Full Disclosure
I
InfoQ
Jina AI
Jina AI
GbyAI
GbyAI
P
Proofpoint News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
腾讯CDC
博客园 - 司徒正美
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
F
Fortinet All Blogs
B
Blog
A
About on SuperTechFans
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
C
Check Point Blog
J
Java Code Geeks
L
LangChain Blog
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
爱范儿
爱范儿
Recorded Future
Recorded Future
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
IT之家
IT之家
博客园 - 聂微东
量子位
G
Google Developers Blog
Vercel News
Vercel News
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
D
Docker
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
罗磊的独立博客
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - MK2

cnpmcore 超大 JSON parse 性能优化 基于 Postgres 实现一个 Job Queue Graceful exit with cluster and pm 使用 connect-domain 捕获异步调用中出现的异常 Defense hash algorithm collision 防御hash算法冲突导致拒绝服务器 fibonacci(40) benchmark [nodejs]保证你的程序死了还能复活:forever and forever webui [nodejs]Buffer vs String Nodejs "Hello world" benchmark npm 资源库镜像 NodeBlog v0.2.0 更新说明 关于__proto__的链式记忆 NAE支持自定义域名了 Nodejs 离线文档下载 nodejs读写大文件 Nodejs HTTP请求的超时处理(Nodejs HTTP Client Request Timeout Handle) 在jQuery 1.5+ 的jqXHR上监听文件上传进度(xhr.upload) 关于Nodejs中Buffer释放的二三事 nodejs web开发入门: Simple-TODO Nodejs 实现版
Use Blanket.js instead of jscover
MK2 · 2013-06-07 · via 博客园 - MK2

在遇到 Blanket.js 之前,我一直使用这 jscover 来做代码覆盖率测试。

jscover

使用 jscover ,好处是不需要编译,直接使用 java 版本;缺点是需要 java 环境依赖。 通过 Makefile 来驱动整个测试执行,如 urllib/Makefile

TESTS = test/*.test.js
REPORTER = spec
TIMEOUT = 20000
JSCOVERAGE = ./node_modules/jscover/bin/jscover

test:
  @NODE_ENV=test ./node_modules/mocha/bin/mocha \
    --reporter $(REPORTER) \
    --timeout $(TIMEOUT) \
    $(TESTS)

test-cov:
  @rm -rf ./lib-cov
  @$(JSCOVERAGE) lib lib-cov
  @URLLIB_COV=1 $(MAKE) test REPORTER=dot
  @URLLIB_COV=1 $(MAKE) test REPORTER=html-cov > coverage.html

.PHONY: test test-cov

执行代码覆盖率测试:

$ make test-cov

打开 coverage.html 就能看到覆盖情况了。

Blanket.js

某天在github上看到 Blanket.js ,算是意外收获,终于能摆脱代码转换依赖了。

Blanket.js is an easy to install, easy to configure, and easy to use JavaScript code coverage library that works both in-browser and with nodejs.

使用上 Blanket.js 以后,不再需要将代码转换落地成文件,也不需要java依赖。

还是以 urllib/Makefile 为例:

TESTS = test/*.test.js
REPORTER = spec
TIMEOUT = 20000
MOCHA_OPTS =

test:
  @NODE_ENV=test ./node_modules/mocha/bin/mocha \
    --reporter $(REPORTER) \
    --timeout $(TIMEOUT) \
    $(MOCHA_OPTS) \
    $(TESTS)

test-cov:
  @URLLIB_COV=1 $(MAKE) test MOCHA_OPTS='--require blanket' REPORTER=dot
  @URLLIB_COV=1 $(MAKE) test MOCHA_OPTS='--require blanket' REPORTER=html-cov > coverage.html

.PHONY: test test-cov

参考 Getting Started Guide (nodejs version)

package.json 添加上 blanket 的代码匹配模式,确定你需要对那个路径下的代码进行转换。

"scripts": {
  "test": "make test",
  "blanket": { "pattern": "urllib/lib" }
},

执行命令还是保持一致:

$ make test-cov

coverage.html 跟使用 jscover 的报告结果一致,缺没有了文件生成,也不再需要去服务器上安装java了。

Project

对于非lib类项目,如普通的应用项目,进行代码覆盖率测试,同样可以使用 Blanket.js 很好地做到。

urlrar 为例:

Markfile

TESTS = test/*.test.js
REPORTER = spec
TIMEOUT = 10000
MOCHA_OPTS =

install:
  @npm install

test: install
  @NODE_ENV=test ./node_modules/mocha/bin/mocha \
    --reporter $(REPORTER) \
    --timeout $(TIMEOUT) \
    $(MOCHA_OPTS) \
    $(TESTS)

test-cov: 
  @URLRAR_COV=1 $(MAKE) test MOCHA_OPTS='--require blanket' REPORTER=html-cov > coverage.html
  @URLRAR_COV=1 $(MAKE) test MOCHA_OPTS='--require blanket' REPORTER=travis-cov

test-all: test test-cov

.PHONY: test-cov test test-all

package.json

"devDependencies": {
    "travis-cov": "*",
    "blanket": "*",
    // ...
  },
  "scripts": {
    "test": "make test-all",
    "blanket": { 
      "pattern": "//^((?!(node_modules|test)).)*$/",
      "data-cover-flags": {
        "debug": false
      }
    },
    "travis-cov": {
      "threshold": 93
    }
  },
$ npm test 

运行结果: 包含测试结果和代码覆盖率.

1
1

有爱

^_^ 希望本文对你有用。