Mochaを使用してテストサーバーをテストしようとしています。これは私が使用する次のコードで、別の同様の投稿で見つかったものとほぼ同じです。
beforeEach(function(done) {
// Setup
console.log('test before function');
ws.on('open', function() {
console.log('worked...');
done();
});
ws.on('close', function() {
console.log('disconnected...');
});
});
afterEach(function(done) {
// Cleanup
if(readyState) {
console.log('disconnecting...');
ws.close();
} else {
// There will not be a connection unless you have done() in beforeEach, socket.on('connect'...)
console.log('no connection to break...');
}
done();
});
describe('WebSocket test', function() {
//assert.equal(response.result, null, 'Successful Authentification');
});
問題は、このドラフトを実行すると、表示されるはずのconsole.logがコマンドプロンプトに表示されないことです。何が間違っているのか説明していただけますか?
Georgiは、テストを指定するためにit
呼び出しが必要ですが、必要でない場合はファイルにトップレベルのdescribe
を持つ必要はないことは正しいです。単一のdescribe
を多数のit
呼び出しに置き換えることができます。
it("first", function () {
// Whatever test.
});
it("second", function () {
// Whatever other test.
});
テストスイートが小さく、1つのファイルのみで構成されている場合、これは非常にうまく機能します。
テストスイートが大きい場合、または複数のファイルに分散している場合は、非常に強くbeforeEach
とafterEach
をit
と一緒に入れることをお勧めしますdescribe
。スイート内のすべてのテストがbeforeEach
またはafterEach
によって実行される作業を必要とするという絶対的な肯定的な場合を除きます。 (Mochaを使用して複数のテストスイートを作成しましたが、テストごとに実行する必要のあるbeforeEach
またはafterEach
を一度も持っていません。)
describe('WebSocket test', function() {
beforeEach(function(done) {
// ...
});
afterEach(function(done) {
// ...
});
it('response should be null', function() {
assert.equal(response.result, null, 'Successful Authentification');
});
});
beforeEach
とafterEach
をdescribe
の中にこのように配置しない場合、Webソケットをテストするためのファイルと、データベース操作をテストするための別のファイルがあるとします。データベース操作テストを含むファイル内のテストでは、alsoの前後にbeforeEach
およびafterEach
が実行されますそれら。 beforeEach
とafterEach
を上記のようにdescribe
の内側に配置すると、それらがWebソケットテストに対してのみ実行されることが保証されます。
この例にはテストがありません。実行するテストがない場合、前後のフックは呼び出されません。次のようなテストを追加してみてください。
describe('WebSocket test', function() {
it('should run test and invoke hooks', function(done) {
assert.equal(1,1);
done();
});
});
beforeEach()
およびafterEach()
フックを実行するには、suite-callback(eg it
)内にtest-callback(eg describe
)が必要です。 。詳細 https://mochajs.org/#run-cycle-overview