捕捉摩卡超时

时间:2015-03-20 08:35:57

标签: node.js mocha mocha-web-velocity

我正在编写一个需要与另一台服务器通信的node.js Web服务。所以它基本上是服务器到服务器的通我之前没有任何编写Web服务的经验,所以我的知识非常有限。对于单元测试我正在使用Mocha。

现在,当这个其他服务器没有响应我的GET请求并且请求实际超时时,我打算测试我的服务在特定场景中的行为。对于测试,我在我的Web服务周围创建了一个虚假的客户端和服务器。我的Web服务现在接受来自这个假客户端的请求,然后从我创建的另一个假服务器获取信息,然后以预期的格式返回响应。为了模拟超时,我不从路由处理程序执行response.end()。问题是Mocha判断它没有通过这个测试用例。

有没有办法可以在Mocha中捕捉这个故意超时并且测试成功了?

1 个答案:

答案 0 :(得分:0)

作为mido22 suggested,您应该使用处理由您用于连接的任何库生成的超时。例如,使用request

var request = require("request");

it("test", function (done) {
    request("http://www.google.com:81", {
        timeout: 1000
    }, function (error, response, body) {
        if (error && error.code === 'ETIMEDOUT') {
            done(); // Got a timetout: that's what we wanted.
            return;
        }

        // Got another error or no error at all: that's bad!
        done(error || new Error("did not get a timeout"));
    });
});