在Express中为中间件testing提出请求\响应

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

所以这件事情

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); }); }; 

我正在编写unit testing,并希望模拟出来,并返回自己的回应,当传出的请求与这些function被解雇。

我遇到了超级烂摊子,并且写下了这样一个套餐:

 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这样的东西,所以我可以监视一个会触发我的中间件function并返回我select的响应的请求。 我只是在努力去理解如何添加我的testing桩。

有人可以进一步build议吗?

谢谢

node-nock可以logging通过http模块(以及通过代理,请求等)所做的请求。 这些可以在你的testing套件中重播。 GitHub页面有很好的文档。