Можете да постигнете това с помощта на 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());
Подозирам, че този подход може да е подобен за други рамки за тестване.