1

別のサーバーと通信する必要がある node.js Web サービスを作成しています。したがって、基本的にサーバー間通信です。Web サービスを作成した経験がないため、知識が非常に限られています。単体テストには Mocha を使用しています。

ここで、この別のサーバーが GET 要求に応答せず、要求が実際にタイムアウトになった場合に、特定のシナリオでサービスの動作をテストするつもりです。テストのために、Web サービスの周りに偽のクライアントとサーバーを作成しました。私の Web サービスは、この偽のクライアントから要求を受け取り、作成した別の偽のサーバーから情報を取得し、期待される形式で応答を返します。タイムアウトをシミュレートするために、ルート ハンドラから response.end() を実行しません。問題は、Mocha がこのテスト ケースに失敗したと判断したことです。

Mocha でこの意図的なタイムアウトをキャッチし、テストが成功する方法はありますか?

4

1 に答える 1

0

mido22が提案したように、接続に使用するライブラリによって生成されたタイムアウトを処理する必要があります。たとえば、次の場合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"));
    });
});
于 2015-03-20T10:40:52.987 に答える