关注“前端张大胖”
打破知识诅咒
和我一起打造自己的知识体系
从此告别迷茫
━━━━
上一篇文章我们大概的了解了单元测试的理论知识以及如何配置和使用,以及针对模块、controller如何编写测试用例。
那我们写的 http 接口是否可以进行单元测试呢?
一个简单的想法就是先启动 koa 或者 express 的服务,然后针对所提供的服务进行编码,比如验证服务状态是否是200,验证是否能正常登录,验证是否能正常返回数据。
上面的思路的实现是需要手动编码的方式的实现。那有没有一个标准化的工具可以和mocha 无缝集合呢?
答案是肯定的。
这里我们要用到 SuperTest 这个库。
SuperTest 提供了丰富的 api,可以对我们的http 服务进行各种情况的单元测试。
贴下项目中的代码,服务启动代码已简化
const request = require('supertest');
const express = require('express');
const app = express();
app.get('/', function(req, res) {
res.status(200).json({ name: 'john' });
});
app.get('/logs', function(req, res) {
res.status(200).json({ name: 'log' });
});
module.exports = app;
/**
* http 接口测试
*/
const request = require('supertest');
const app = require('../../app');//引入服务实例
const assert = require('assert');
describe('Server GET /', function () {
it('server status is 200', function (done) {
request(app)
.get('/')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, done);
});
it('server router /logs', function (done) {
request(app)
.get('/logs')
.expect('Content-Type', 'text/html; charset=utf-8')
.expect(200, done);
});
});
具体的SuperTest 的 api 还有很多,有兴趣的可以看下github
https://github.com/visionmedia/supertest
没时间看?不妨收藏,但收藏后要记得看。
觉得有用的话 请动动手
分享到朋友圈或者技术交流群
让更多人受益
长按关注
>>>
盘它
有用的话,就给点个赞吧