0

「テープ」を使用して nodejs アプリの単体テストを作成しています。テストを実行すると、プロセスが永久にブロックされます。さらに掘り下げてみると、「nodejs mainapp.js」を実行すると処理が終わらないことがわかりました。それは単体テストの実行も妨げています。

イベントが登録されている場合、nodejsプロセスは終了しないようです。私の場合、mongo または redis 接続を作成するか、「node-cache」などのノード モジュールを使用すると、これが発生します。そのようなモジュールをすべて回避できるとは想像しがたいです。問題を回避する方法に関する提案。私のテストケースは本当に単純なので、問題があります。

ちなみに、http.listen で nodejs がブロックされないことを確認しました。誰かがモックアップの使用について議論するかもしれませんが、私はそうするつもりはありません。

test('dummy test', function(t) {
  t.equal('hello world', 'hello world', 'Yes hello world = hellow world');
  t.end();
});
4

1 に答える 1

2

テープ プロセスが存続する主な原因は、MongoDB 接続が閉じられていないことです。すべてのテストが終了したときに接続を閉じる最も簡単な方法は、MongoDB 接続を閉じる手順を含む空のテストを作成することです。以下は、この場合は Mongoose を使用した例です。

var test = require('tape');
var mongoose = require('mongoose');

test('test', function (t) {
    t.pass('Example');
    t.end();
});

test('finish', function (t) {
    mongoose.disconnect();
    t.pass('closing db connection');
    t.end();
});

問題が実際にMongoDB接続である場合、それを処理するより適切な方法は、ドキュメントtest.onFinish(fn)に従って使用することです:

onFinish フックは、テープがテストの概要を出力する直前にすべてのテープ テストが終了したときに呼び出されます。

于 2016-03-29T21:16:19.120 に答える