MongoDB
 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Актуализация Deep Array

  2. Публикувайте данни от формуляр в масив от съществуващ MongoDB документ с помощта на Express и Mongoose

  3. Как да преименувам полета при извършване на търсене/проекция в MongoDB?

  4. как да предадем променлива към регулярен израз

  5. намерете идентификатора на последния поддокумент, вмъкнат в mongoose