node.js:模拟http请求和响应

有没有简单的方法来模拟unit testing中间件的HTTP请求和响应对象?

从标签看,这个问题看起来像是Express。 在这种情况下, 超级棒是非常好的:

 var request = require('supertest') , express = require('express'); var app = express(); app.get('/user', function(req, res){ res.send(201, { name: 'tobi' }); }); request(app) .get('/user') .expect('Content-Type', /json/) .expect('Content-Length', '20') .expect(201) .end(function(err, res){ if (err) throw err; }); 

对于一般的节点使用, Flatiron Nock看起来是一个不错的select:

 var nock = require('nock'); var example = nock('http://example.com') .get('/foo') .reply(200, { foo: 'bar' }); var http = require('http'); var options = { host: 'example.com', port: 80, path: '/foo', method: 'GET' } var req = http.request(options, function(res) { res.on('data', function(chunk) { console.log('BODY: ' + chunk); }); }); req.on('error', function(e) { console.log('error: ' + e); }); req.end(); 

输出:

BODY:{“foo”:“bar”}

我正在使用nodejutsu模拟:

https://github.com/nodejitsu/mock-request

也许这是你在找什么。

我编写了一个库来模拟通过标准HTTP或通过请求模型所做的请求响应:

https://github.com/ctide/fakeweb

检查https://github.com/timsavery/node-hmock或npm install hmock …任何反馈欢迎! 到目前为止,该解决scheme对我来说效果很好。

嘲笑看起来很棒。

本质上它劫持require调用,并返回您指定的不同的对象/函数存根。

我鼓励你使用motty 。 为什么我们需要另一个代码?