Stubbing request\responses 用于 Express 中的中间件测试
Stubbing request\responses for middleware tests in Express
我的 Express 应用程序中有一些中间件功能,它们向单独的服务器发出传出请求,然后将响应 return 发送回客户端。
所以这件事:
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);
});
};
我正在考虑编写单元测试,并希望模拟并 return 当带有这些函数的传出请求被触发时我自己的响应。
我遇到过 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 这样的东西,这样我就可以监视一个会触发我的中间件功能的请求和 return 我选择的响应。我只是在努力了解如何将存根添加到我的测试中。
有人可以提供进一步的建议吗?
谢谢
node-nock 可以记录通过 http
模块发出的请求(因此,通过代理请求)。然后可以将这些排队等待在您的测试套件中重播。 GitHub 页面有很好的文档。
我的 Express 应用程序中有一些中间件功能,它们向单独的服务器发出传出请求,然后将响应 return 发送回客户端。
所以这件事:
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);
});
};
我正在考虑编写单元测试,并希望模拟并 return 当带有这些函数的传出请求被触发时我自己的响应。
我遇到过 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 这样的东西,这样我就可以监视一个会触发我的中间件功能的请求和 return 我选择的响应。我只是在努力了解如何将存根添加到我的测试中。
有人可以提供进一步的建议吗?
谢谢
node-nock 可以记录通过 http
模块发出的请求(因此,通过代理请求)。然后可以将这些排队等待在您的测试套件中重播。 GitHub 页面有很好的文档。