#javascript #node.js #unit-testing #mocha.js #in-memory-database
Вопрос:
Я пытаюсь создать набор тестовых примеров с помощью mocha и mongodb-memory-server(в качестве базы данных в памяти). Я пытаюсь реализовать это следующим образом.
Структура проекта:
тестовый запуск: (в пакете.json)
"scripts": {
"test": "mocha 'app/**/*.spec.js' --recursive --exit"
},
Итак, сначала мне нужно инициализировать MongoDB в памяти, вот почему я использую global.spec.js
, который выглядит так,
const { MongoMemoryServer } = require("mongodb-memory-server");
const mongoose = require("mongoose");
mongoose.set("usePushEach", true);
let mongoServer;
before(async function () {
// mongod donwload on first time
this.timeout(30 * 1000);
mongoServer = new MongoMemoryServer();
const mongoUri = await mongoServer.getUri();
await mongoose.connect(mongoUri, {});
process.env.AGENDA_DB_URI = mongoUri;
});
after(function () {
mongoose.disconnect();
mongoServer.stop();
});
and a test-setup.js
file which looks like this,
const { MongoMemoryServer } = require("mongodb-memory-server");
(async function() {
// trigger downloading mongodb executable on first time
const mongoServer = new MongoMemoryServer();
await mongoServer.getUri();
mongoServer.stop();
})()
.then(() => {
process.exit(0);
})
.catch(err => {
console.error(err);
process.exit(1);
});
all *.spec.js
files will be inside modules
folder. In simple word each folder inside module will have one .spec.js
file. If I try to run this using the npm run test
command it is throwing me some error, that looks like this,
1) "before all" hook
0 passing (448ms)
1 failing
1) "before all" hook:
Uncaught Error: TypeError: logWarnFn is not a function
Я считаю, что эта logWarnFn
ошибка исходит от i18n. Но когда я запускаю сервер, он работает нормально.
Версии:
"mongodb-memory-server": "^6.6.2",
"mocha": "^6.0.2",
"i18n": "0.8.3",