gulp-jsx-coverage
とgulp-mocha
でmocha
を使用してテストスイートを実行しています。私のテストはすべて実行され、合格/不合格になります。しかし、テストされているモジュールの中には、superagent
ライブラリ経由でAPIにHTTPリクエストを送信するものがあります。APIに接続しようとすると、Mochaテストスイートでエラーが発生する
開発中の私は、クライアント側のアプリケーションと一緒にlocalhost:3000
にAPIを実行しています。クライアント側のテストでアクセスしようとしているURLです。ただし、テストする場合、APIは通常実行されません。これは、次のエラーで要求が通過取得する任意の時間を結果:
Error in plugin 'gulp-mocha'
Message:
connect ECONNREFUSED
Details:
code: ECONNREFUSED
errno: ECONNREFUSED
syscall: connect
domainEmitter: [object Object]
domain: [object Object]
domainThrown: false
Stack:
Error: connect ECONNREFUSED
at exports._errnoException (util.js:746:11)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:983:19)
私はそうのように、グローバルヘルパーに(request
としてエイリアス)superagent
上のすべてのメソッドをスタブライブラリを試してみた:
function httpStub() {
return {
withCredentials:() => {
return { end:() => {} };
}
};
};
beforeEach(function() {
global.sandbox = sinon.sandbox.create();
global.getStub = global.sandbox.stub(request, 'get', httpStub);
global.putStub = global.sandbox.stub(request, 'put', httpStub);
global.patchStub = global.sandbox.stub(request, 'patch', httpStub);
global.postStub = global.sandbox.stub(request, 'post', httpStub);
global.delStub = global.sandbox.stub(request, 'del', httpStub);
});
afterEach(function() {
global.sandbox.restore();
});
何らかの理由でテストに遭遇したときにメソッドがスタブされないため、ECONNREFUSED
エラーに達します。私は三重チェックして、どこに私はサンドボックスやスタブを復元しています。
私が実行している問題を解決する方法か、この全体的な解決策がありますか?
を助けるべきである。このような
何か挙動が決定論的ですか?あなたは問題が「いくつかのテスト」のために発生すると書いています - それは常に失敗した同じテストセットか、特定のテストが1回のテストランで合格し、他のテストで失敗することでしょうか?それは同じテストで毎回失敗しませんが、それはテストの特定のサブセット内の失敗しない@TomasKulich –
。これは、これらのアクションが最終的にAPIへの呼び出しをもたらすテストであるからです。私が以前にエラーが出た単一のテストファイルを実行すると、それは成功します。これはおそらく 'request'メソッドが何らかの理由でunstubbedになっているために、スイート全体を実行しているようだと思われます。 – Jakemmarsh