1

我正在尝试使用 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",
4

0 回答 0