【问题标题】:What is Jest's equivalent of Mocha's root-level hooks?Jest 相当于 Mocha 的根级钩子是什么?
【发布时间】:2019-01-11 00:27:44
【问题描述】:

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

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

在 Mocha 中,我可以轻松做到 documented here:

您还可以选择任何文件并添加“根”级挂钩。例如,在所有 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 做同样的事情?

【问题讨论】:

    标签: javascript node.js jestjs


    【解决方案1】:

    Jest API 有 beforeAll and afterAll 用于此目的。

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

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

    【讨论】:

    • 谢谢。但我的意思是有一个根 beforeAllafterAll 将在所有测试文件中的所有测试之前和之后运行。这可能吗?
    • 您可以将它们移动到一个通用模块 (testHelper) 并在每个测试文件中导入它或使用全局* 配置选项 jestjs.io/docs/en/configuration.html#globalsetup-string
    猜你喜欢
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2020-05-12
    • 2016-10-23
    • 2020-08-20
    • 2012-02-01
    相关资源
    最近更新 更多