新手求教,如何使用Nodejs给Express网页应用编写单元测试以及代码覆盖率测试?有没有比较简单的例子可供参考吗?
新手求教,如何使用Nodejs给Express网页应用编写单元测试以及代码覆盖率测试?有没有比较简单的例子可供参考吗?
之前在 Google 里搜索过一些教程,不过好像很多都比较偏 RESTful API 相关,而且好像没有比较直观明了的案例。
mocha + istanbul + should + 任何一个你用的习惯的 Node HTTP 库
相当于先启动 Web 服务器,然后通过 request 之类的库一个个访问地址进行测试吗?
如果是 express 的话有一个配套的测试库,不过名字忘了。其实测试也分很多,像你提到的开 request 去测试属于功能测试而不是单元测试。
我记得像 Mocha 还有 Istanbul 都有非官方开发的 Express 中间件,但是这样只能用在人工测试环境,不方便用在 CI 上
顺便现在都在用 koa@next 做开发了喵~ express 暂时都没在用了喵~
楼主想进行哪种测试? 一种测试是测试页面的功能,比如点击按钮背景变色这种. 另一种是测试 api ,比如向哪个地址发请求应该返回什么东西. 这两种方法是不一样的.
这是我之前用 Node.js 写的网页应用: https://github.com/DoraJDJ/project-television
最近开了 Greenkeeper 后,每次提醒依赖更新的时候都会提醒 Untested (未测试),这样我就不能确定依赖更新后程序还能不能用。
所以我想弄个应用测试,这样每次依赖更新的时候就能进行自动化的测试,以确定会不会出问题。
你这个前后端都要做测试了
前端测试用可以直接上 headless browser, jasmine, casperjs 或者 seleuim 都可以,试一试.
后端测试相对简单些,楼上说的都可以.
如果不知道怎么开始的话可以看我之前造过的两个简单轮子, 都托管在 travis-ci 上了
https://github.com/flowmemo/can-i-reach-google 前端测试, 用的 casperjs.
https://github.com/flowmemo/koa-httpany 这个有后端测试,有代码覆盖率统计.
这两个都非常简单,估计你看一下就知道对测试有个概念了.
说错了 jasmine 不是 headless browser ,剩下几个是才是
针对你提出的问题,以下是一个简单的示例,展示如何使用Node.js为Express网页应用编写单元测试以及代码覆盖率测试。
单元测试
-
安装依赖:
使用Mocha和Chai进行单元测试,使用SuperTest模拟HTTP请求。
npm install --save-dev mocha chai supertest
-
编写测试:
创建一个测试文件,例如
app.test.js
,并编写以下测试代码:const request = require('supertest'); const app = require('../app'); // 引入你的Express应用 describe('GET /', function() { it('should respond with 200 and HTML', function(done) { request(app) .get('/') .expect('Content-Type', /text\/html/) .expect(200, done); }); });
-
运行测试:
在
package.json
中添加测试脚本,然后运行npm test
。"scripts": { "test": "mocha" }
代码覆盖率测试
-
安装Istanbul:
npm install --save-dev istanbul
-
生成覆盖率报告:
在
package.json
中添加覆盖率测试脚本,然后运行npm run test-cov
。"scripts": { "test-cov": "istanbul cover node_modules/mocha/bin/_mocha" }
这样,你就可以为Express网页应用编写单元测试并生成代码覆盖率报告了。以上示例仅供参考,你可以根据自己的需求进行调整和扩展。