sql >> データベース >  >> NoSQL >> MongoDB

テスト用のメモリ内MongoDB?

    これは、mongodb-memory-server を使用して実行できます。 。このパッケージは、mongodバイナリをホームディレクトリにダウンロードし、必要に応じて、メモリでバックアップされた新しいMondoDBインスタンスをインスタンス化します。テストファイルごとに、新しいサーバーを起動できます。つまり、すべてを並行して実行できます。

    jest を使用している読者向け およびネイティブmongodbドライバー 、このクラスが役立つ場合があります:

    const { MongoClient } = require('mongodb');
    const { MongoMemoryServer } = require('mongodb-memory-server');
    
    // Extend the default timeout so MongoDB binaries can download
    jest.setTimeout(60000);
    
    // List your collection names here
    const COLLECTIONS = [];
    
    class DBManager {
      constructor() {
        this.db = null;
        this.server = new MongoMemoryServer();
        this.connection = null;
      }
    
      async start() {
        const url = await this.server.getUri();
        this.connection = await MongoClient.connect(url, { useNewUrlParser: true });
        this.db = this.connection.db(await this.server.getDbName());
      }
    
      stop() {
        this.connection.close();
        return this.server.stop();
      }
    
      cleanup() {
        return Promise.all(COLLECTIONS.map(c => this.db.collection(c).remove({})));
      }
    }
    
    module.exports = DBManager;
    

    次に、各テストファイルで次のことを実行できます。

    const dbman = new DBManager();
    
    afterAll(() => dbman.stop());
    beforeAll(() => dbman.start());
    afterEach(() => dbman.cleanup());
    

    このアプローチは他のテストフレームワークでも同様であると思われます。



    1. Mongodb、linqドライバー。変数またはステートメントを含むContainsを作成する方法

    2. モジュールが見つかりません:エラー:MongoDBを使用しているときに「dns」を解決できません

    3. DuplicateKeyExceptionをスローするMongodbアップサート

    4. Python3.4.1クライアントのcharbプレフィックスについてredisに接続します