sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB i minnet för test?

Du kan åstadkomma detta med mongodb-memory-server . Paketet laddar ner en mongod-binär till din hemkatalog och instansierar en ny minnesstödd MondoDB-instans efter behov. För varje testfil kan du snurra upp en ny server vilket innebär att du kan köra dem alla parallellt.

För läsare som använder jest och infödda mongodb-drivrutinen , kan du ha nytta av den här klassen:

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;

Sedan kan du göra följande i varje testfil:

const dbman = new DBManager();

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

Jag misstänker att detta tillvägagångssätt kan vara liknande för andra testramar.



  1. Det gick inte att ansluta till mongodb Fel:kunde inte ansluta till server 127.0.0.1:27017 på src/mongo/shell/mongo.js:L112

  2. Använder du Redis för att implementera inloggning?

  3. Kan inte ansluta till Mongo Cloud mongodb Database i Golang på Ubuntu

  4. Mongo:nätverksfel vid försök att köra kommandot 'whatsmyuri' på värden