在Express

时间:2016-08-17 14:51:04

标签: node.js unit-testing express middleware sinon

我的Express应用程序中有一些中间件功能,它们向单独的服务器发出传出请求,然后将响应发送回客户端。

所以这件事:

var request = require('request'),
  helpers = require('./helpers.js');

//GET
module.exports.fetch = function(req, res) {
  var options = helpers.buildAPIRequestOptions(req);
  request(options, function(err, response, body){
    res.status(response.statusCode).send(body);
  });
};

我正在考虑编写单元测试,并希望在带有这些函数的传出请求被触发时模拟并返回我自己的响应。

我遇到过supertest并且已经开始编写这样的套件:

var app = require('./index.js'),
  request = require('supertest')(app),
  should = require('should');

//GET
describe('GET requests', function(){
  it('should do something', function(done){
    request
      .get('/api/schemes')
      .expect(200, done)
      .end(function(err, res){
        // console.log(res);
        // console.log(err);
        res.status.should.equal(200);
      });
  });
});

我觉得我在这里需要像sinon这样的东西,所以我可以监视我的中间件功能并返回我选择的响应的请求。我只是在努力理解如何在我的测试中添加存根。

有人可以进一步提出建议吗?

由于

1 个答案:

答案 0 :(得分:2)

node-nock可以记录通过{{1}}模块发出的请求(通过代理,请求)。然后可以将这些排队等待在您的测试套件中重播。 GitHub页面有很棒的文档。