构建知识体系 第2期 - 单元测试如何做 http 测试

关注“前端张大胖”

打破知识诅咒

和我一起打造自己的知识体系

从此告别迷茫

━━━━ 

640?wx_fmt=png

上一篇文章我们大概的了解了单元测试的理论知识以及如何配置和使用,以及针对模块、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

没时间看?不妨收藏,但收藏后要记得看。

觉得有用的话 请动动手

分享到朋友圈或者技术交流群

让更多人受益

长按关注 >>>
盘它
640?wx_fmt=jpeg
640?wx_fmt=png

有用的话,就给点个赞吧 smiley_63.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zz_jesse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值