2017-11-23 15 views
1

私は自分のコードで実行する一連のテストをしています。テストを実行する前に、テストデータベースへのデータベース接続を開き、dbが空であることを確認したいと思います。この接続はすべてのテストで開いたままです。次に、すべてのテストが完了したら、データベース接続を閉じてデータベースを空にします。ベストプラクティスと、モカテストのデータベース接続を設定する最も効率的な方法

私の現在の解決策は、ファイルごとに接続を開くことで、全体的に大量の接続につながります。接続を一度開く - >テストを実行する - > dbをクリア - >接続を一度閉じるのが理想的です。ここで

は私のモカテストファイルのいずれかのコードです:

import {assert} from 'chai'; 
import mongoose from 'mongoose'; 
import User from '../../../server/models/user.js'; 
import 'dotenv/config'; 

mongoose.connect(process.env.DB_TEST).then(db => { 
    describe('User Model', function() { 
    it('Save', function(done) { 
     var john = new User({ 
     name: { 
      first: 'John', 
      last: 'smith' 
     }, 
     email: '[email protected]', 
     type: 'student' 
     }); 

     john.save(done); 
    }); 
    }); 
}).catch(err => { 
    console.log('Failed to connect to testing database: ' + err); 
}); 

現在、このコードは完全に機能しています。しかし、私は、私のテストコレクションのためのデータベース接続のオープン、クリア、およびクローズを処理するより良い方法があると確信しています。

+0

カフェモカでファイルを呼び出しますか?本当に? –

+0

@rahulmr [Mocha](https://mochajs.org/) –

答えて

0

私がRoot level hooksと呼ぶものを使用することができます。

例:テスト

test0.es6 
test1.es6 
test2.es6 
... 

ファイルと同様に、データベース接続を処理するためにtest0.es6ファイルを使用します。

// ROOT HOOK Executed before the test run 
before((done) => { 
    connectToDatabase() 
    .then(() => { 
     ... 
     done(); 
    }) 
    .catch(...); 
}); 

// ROOT HOOK Excuted after every tests finished 
after((done) => { 
    disconnectFromDatabase() 
    .then(() => { 
     ... 
     done(); 
    }) 
    .catch(...); 
}); 

データベース接続を使用してテストを実行するために、他のファイルを使用します。

/** @test {core} */ 
describe('core',() => { 
    /** @test {core#executeCommandApi} */ 
    describe('executeCommandApi()',() => { 
    it(...); 
    }); 
}); 

物事が知っている:モカはアルファベット順

+1

これは完全に機能しました。乾杯。 – DanielPahor

関連する問題