node.js:模拟http请求和响应
有没有简单的方法来模拟unit testing中间件的HTTP请求和响应对象?
它看起来像https://github.com/howardabrams/node-mocks-http和https://github.com/vojtajina/node-mocks可以用来创build模拟http.ServerRequest
和http.ServerResponse
对象。
从标签看,这个问题看起来像是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”}
我编写了一个库来模拟通过标准HTTP或通过请求模型所做的请求响应:
检查https://github.com/timsavery/node-hmock或npm install hmock
…任何反馈欢迎! 到目前为止,该解决scheme对我来说效果很好。
嘲笑看起来很棒。
本质上它劫持require
调用,并返回您指定的不同的对象/函数存根。
我鼓励你使用motty 。 为什么我们需要另一个代码?