加载中…

加载中...

Express使用supertest进行测试总结

转载 2017-08-22 16:00:08

照理说单元测试和集成测试应该严格区分的。

单元测试就是不调用任何外部资源的功能性测试。

但是在NodeJs+Express+Mongodb​的环境下,实在忍不住要以单元测试的方式

来测试express的各种应用,实在是太方便了。

1. Express的主程序server.js

原程序的最后是:http.createServer(app).listen(4000);

因为要进行测试需要改为:

var server = http.createServer(app).listen(4000);

module.exports = server;

2. ​测试程序


​// before和after里面要有测试环境的打开和关闭

// 在这个例子中before涉及在数据库中插入一条测试记录和启动服务器​

// ​after涉及删除测试记录和关闭服务器

var server;

describe('login', () => {

//​ 注意使用了async/await, 因为必须将这些异步操作顺序执行

  before( async () => {

    await userData.addNew('testUser', 'testBumen');

    server = await require('server.js');

  })

  after( async () => {

    await userData.deleteOne('testUserForLogin');

    await server.close();

  })


// 测试一下用户名错的情况

// 应用返回的结果是{ authenticated: false }​

  it('/app/login - invalid', (done) => {

    request(server)

      .get('/app/login/falseTest/correctPassword')

      .expect("Content-type",/json/)

      .expect(200)

      .end( (err, res) => {

        expect(res.body.authenticated).to.be.false;

        if (err) { return done(err); } else { done() }

      });

  })

阅读(0) 评论(0) 收藏(0) 转载(0) 举报
分享

评论

重要提示:警惕虚假中奖信息
0条评论展开
相关阅读
加载中,请稍后
瀛ょ嫭鍙ゆ
  • 博客等级:
  • 博客积分:0
  • 博客访问:65,264
  • 关注人气:0
  • 荣誉徽章:

相关博文

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有