MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB w pamięci do testu?

Możesz to zrobić za pomocą mongodb-memory-server . Pakiet pobiera plik binarny mongod do katalogu domowego i w razie potrzeby tworzy instancję nowej instancji MondoDB opartej na pamięci. Dla każdego pliku testowego możesz uruchomić nowy serwer, co oznacza, że ​​możesz uruchomić je wszystkie równolegle.

Dla czytelników korzystających z jest i natywny sterownik mongodb , ta klasa może okazać się przydatna:

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;

Następnie w każdym pliku testowym możesz wykonać następujące czynności:

const dbman = new DBManager();

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

Podejrzewam, że to podejście może być podobne dla innych frameworków testowych.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lepsze wyjaśnienie przykładów specyfikacji bson?

  2. MongoDB wstawia dokument lub pole inkrementacji, jeśli istnieje w tablicy

  3. Laravel 5 Wymowna suma pomnożonych kolumn dla mongo DB

  4. co to jest format archiwum mongodb?

  5. Jak obsługiwać dokumenty cyrkularne w MongoDB/DynamoDB?