首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟超文本传输协议响应以测试node.js超文本传输协议客户端

模拟超文本传输协议响应以测试node.js超文本传输协议客户端
EN

Stack Overflow用户
提问于 2011-01-21 21:36:58
回答 7查看 6.8K关注 0票数 3

如何模拟HTTP响应来测试应用程序?

我想做的是模拟超文本传输协议响应来测试超文本传输协议node.js客户端。除了node.js之外,有没有像fakeweb一样的东西可以使用?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-01-23 11:12:53

为什么不使用node.js服务器?它们编写起来很简单,可以让你完全控制响应。

下面是一个直接来自http://nodejs.org/的示例

代码语言:javascript
复制
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/');
票数 4
EN

Stack Overflow用户

发布于 2013-12-11 19:43:49

我们之前使用的是定制的HTTP虚拟服务器,但最近切换到了这个:

https://github.com/pgte/nock

票数 2
EN

Stack Overflow用户

发布于 2014-03-12 13:51:57

如果我很好地理解了这个问题,您可以使用nock (https://github.com/pgte/nock)来模拟来自给定路由的伪HTTP响应。

例如,如果您使用should.js(https://github.com/visionmedia/should.js/)进行断言,请求请求(lol)可能如下所示:

代码语言:javascript
复制
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对不起。就让它在这里吧,以防它能帮到外面的人。哈哈哈

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4759394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档