sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB v paměti pro test?

Můžete to provést pomocí mongodb-memory-server . Balíček stáhne binární soubor mongoda do vašeho domovského adresáře a podle potřeby vytvoří instanci nové instance MondoDB zálohované pamětí. Pro každý testovací soubor můžete spustit nový server, což znamená, že je můžete všechny spustit paralelně.

Pro čtenáře používající jest a nativní ovladač mongodb , může se vám tato třída hodit:

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;

Potom v každém testovacím souboru můžete provést následující:

const dbman = new DBManager();

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

Mám podezření, že tento přístup může být podobný pro jiné testovací rámce.



  1. Odstraňování problémů Oprávnění odepřeno při pokusu o připojení k Redis z PHP skriptu

  2. mongoose rozdíl findOneAndUpdate a update

  3. agregační řazení mongodb

  4. Nakonfigurujte a použijte mockup server mongodb pro testování jednotek