如何模拟HTTP响应来测试应用程序?
我想做的是模拟超文本传输协议响应来测试超文本传输协议node.js客户端。除了node.js之外,有没有像fakeweb一样的东西可以使用?
发布于 2011-01-23 11:12:53
为什么不使用node.js服务器?它们编写起来很简单,可以让你完全控制响应。
下面是一个直接来自http://nodejs.org/的示例
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');发布于 2013-12-11 19:43:49
我们之前使用的是定制的HTTP虚拟服务器,但最近切换到了这个:
发布于 2014-03-12 13:51:57
如果我很好地理解了这个问题,您可以使用nock (https://github.com/pgte/nock)来模拟来自给定路由的伪HTTP响应。
例如,如果您使用should.js(https://github.com/visionmedia/should.js/)进行断言,请求请求(lol)可能如下所示:
should = require 'should'
nock = require 'nock'
request = require 'request'
require '../../app.coffee'
// just a mock obj to reply
mockObj =
id: 42
mockRoute = nock 'http://www.mock.com.br'
.get '/path/you/want/to/mock'
.reply 200, mockObj
describe "Mock API", ->
describe "Mock route", ->
it "should return 200 OK and mockObj.id 42", (done) ->
// Arranges test URL
testUrl = "http://www.testurl.com.br:3000/path/you/want/to/test"
expectedObj =
id: 42
request.get testUrl, (error, response, body) ->
// compares expected response's statusCode with received
response.should.have.status 200
expected.should.eql JSON.parse(body)这只是一个例子,对于生产测试来说有点糟糕,但我认为这是一个很好的例子来展示它是如何工作的。
但在这种情况下,就像是在测试运行在端口3000上的是否能够处理对testUrl的请求,并将此请求转换为模拟路由,这是我想要到达的外部路由,并确保当我调用testUrl时该节点正在获取它。
希望能有所帮助。
编辑:代码用CoffeeScript语言编写(以防有人不知道)。如果您更喜欢-> ,请参阅JS中的要点
Edit2:甚至没有查找日期..睡着了:P对不起。就让它在这里吧,以防它能帮到外面的人。哈哈哈
https://stackoverflow.com/questions/4759394
复制相似问题