2016-08-05 10 views
0

私は複数のテストファイルを持っています。各ファイルには、beforeafterの機能があり、サーバーの起動、シャットダウン、dbクリーニングの各作業を行います。サンプルテストファイルのテストファイルを順番に実行しますか?

構造:サーバは、各before通話中に同じポートで起動されているため、これらのファイルをまとめて実行されたとき

describe('some test:', function() { 

    before('reset db; start server', start_server) 
    after('close server', close_server) 

    // some tests 
    describe('#clear_expired_signals:', clear_expired_signals) 
    describe('#delete_signal ', delete_signal) 
} 

私はEADDRINUSE例外倍の大半を取得しています。

mochajsに一度に1つのファイルを強制的に実行させることはできますか(ファイルの順序は関係ありません)?

編集:機能のサンプルの前に

function start_server(done) { 
    intialize_server.start().then(function(options) { 

    seneca = options.seneca; 
    seneca.client({ 
     host: 'localhost', 
     port:options.port, 
    }); 
    done(); 
    } 

} 



function intialize_server(){ 
return new Promise(function (resolve, reject) { 
    seneca.ready(function() { 

     seneca.listen({ 
     host: 'localhost', 
     port: custom_port, 
     }); 

     resolve({ 
     seneca: seneca, 
     port: custom_port 
     }); 
     // console.log('test server listening') 
    }); 
    }); 
} 

機能のサンプル

function close_server(done) { 
    console.log('closing seneca instance'); 
    seneca.close(done); 
    } 
+0

非同期(実行前、実行後、テスト自体)のコードはありますか? – Bergi

+0

'it'関数に渡しましたか? – randominstanceOfLivingThing

+0

'done'コールバックを' after'に渡して、次のテストを実行する前にmochaがサーバーを閉じるのを待たせてください。 – slebetman

答えて

0

後、私はこの問題を回避ました。代わりに、各テストファイルのbeforeafterを実行しているの与えられたとして、私は、マニュアルでROOT-LEVEL HOOKSを追加した

ROOT-LEVEL HOOKS

また、任意のファイルを選択し、「ルート」レベルのフックを追加することができます。たとえば、 は、すべてのdescribe()ブロックの外にbeforeEach()を追加します。これにより、 ファイルが存在するにもかかわらず(これはMochaに暗黙の記述( ブロック、「ルートスイート」と呼ばれているため)、テストケースの前にbeforeEach()へのコールバックが で実行されます。