Jest与Mocha的根级挂钩等效吗?

时间:2019-01-06 05:35:42

标签: javascript node.js jestjs

我正在尝试使用Jest为我的Node.js后端应用程序编写测试。 后端通过猫鼬实现了mongodb实现。

我需要有一个全局挂钩,在所有测试文件中运行 all 测试之前,我可以在其中连接数据库。

在Mocha中,我可以像documented here那样轻松地完成操作:

  

您还可以选择任何文件并添加“根”级挂钩。例如,在所有beforeEach()块之外添加describe()。这将使回调beforeEach()在任何测试用例之前运行,无论它位于哪个文件中(这是因为Mocha有一个隐含的describe()块,称为“根套件”)。

例如,我可以创建一个testHelper.js文件并编写:

const mongoose = require('mongoose');

// ./test/testHelper.js
before((done) => {
  const mongoURI = `${process.env.DB_MONGO_URI}/testdb`;
  mongoose.connect(mongoURI, { useNewUrlParser: true});
  mongoose.connection
    .once('open', done)
    .on('error', (error) => {
      console.warn(error);
      done();
    });
});

after(() => {
  mongoose.disconnect();
});

以上内容将在所有测试文件中的所有测试之前和之后运行。

我如何用笑话来做同样的事情?

1 个答案:

答案 0 :(得分:1)

Jest API为此提供了beforeAll and afterAll

它与Mocha共享顶级隐式describe()块的概念,其他块不必一定放在describe内,包括beforeAllafterAll

请注意,由于Jest测试是同时运行的,beforeAllafterAll仅会影响当前的测试环境,即同一文件中定义的测试。