Jest的根级别钩子与Mocha的等效物是什么?

3
我正在尝试使用Jest为我的Node.js后端应用编写测试。后端通过mongoose实现mongodb功能。 我需要一个全局钩子,在其中可以在运行所有测试文件之前连接到数据库。 在Mocha中,我可以轻松地执行此操作,如此处所述: 您还可以选择任何文件并添加“根”级别的钩子。例如,在所有describe()块之外添加beforeEach()。这将导致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();
});

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

我该如何使用jest实现上述功能?

1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
2
Jest API有 beforeAllafterAll来实现此目的。 它与Mocha共享顶层隐含的describe()块的概念,其他块不一定要放在describe中,包括beforeAllafterAll。 请注意,由于Jest测试是并发运行的,beforeAllafterAll只会影响当前测试环境,即在同一文件中定义的测试。

谢谢。但是我的意思是有一个根beforeAllafterAll,它将在所有测试文件中的所有测试之前和之后运行。这可能吗? - Sang
1
你可以将它们移动到一个公共模块(testHelper)中,并在每个测试文件中导入它,或者使用全局*配置选项 https://jestjs.io/docs/en/configuration.html#globalsetup-string。 - Estus Flask

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,