我正在尝试使用 mocha 和 mongodb-memory-server(作为内存数据库)制作测试用例套件。我正在尝试以下面的方式实现这一点。
项目结构:
测试运行器:(在 package.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();
});
和一个test-setup.js看起来像这样的文件,
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);
});
所有*.spec.js文件都将在modules文件夹内。简而言之,模块内的每个文件夹都有一个.spec.js文件。如果我尝试使用npm run test命令运行它,它会给我一些错误,看起来像这样,
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",
