sql >> Base de Datos >  >> NoSQL >> MongoDB

¿MongoDB en memoria para prueba?

Puede lograr esto usando mongodb-memory-server . El paquete descarga un binario mongod en su directorio de inicio e instancia una nueva instancia de MondoDB respaldada por memoria según sea necesario. Para cada archivo de prueba, puede activar un nuevo servidor, lo que significa que puede ejecutarlos todos en paralelo.

Para lectores que usan broma y el controlador nativo de mongodb , puede encontrar útil esta clase:

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;

Luego, en cada archivo de prueba, puede hacer lo siguiente:

const dbman = new DBManager();

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

Sospecho que este enfoque puede ser similar para otros marcos de pruebas.