1

サーバー構成とルートハンドラーの単体テストにスーパーテストを使用しています。サーバー構成のテストは にtest.server.jsあり、ルート処理のテストは にありtest.routes.handlers.jsます。

を使用してすべてのテスト ファイルを実行するmocha .と、EADDRINUSE. 各ファイルを個別に実行すると、すべてが期待どおりに機能します。

request = require('supertest')どちらのファイルも、スーパーテストと Express サーバー ファイル を定義して必要としますapp = require('../server.js')。ではserver.js、サーバーは次のように起動されます。

http.createServer(app).listen(app.get('port'), config.hostName, function () {
  console.log('Express server listening on port ' + app.get('port'));
});

私の実装に何か問題がありますか?EADDRINUSEテスト実行時のエラーを回避するにはどうすればよいですか?

4

2 に答える 2

1

私自身の質問に答える:

私のスーパーテストの初期化は次のようになります。

var app = require('../server.js');
var request = require('supertest')(app);

ではtest.server.js、これらの require ステートメントを の中に直接入れましたdescribe。ではtest.routes.handlers.js、ステートメントは a のbefore中にありましたdescribe

dankohn's answerを読んだ後、ステートメントを anydescribeまたはの一番上に移動するだけbeforeで、テストはすべて問題なく実行されるようになりました。

于 2013-09-14T16:59:34.330 に答える