Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是玩笑';相当于摩卡咖啡';s根级挂钩?_Javascript_Node.js_Jestjs - Fatal编程技术网

Javascript 什么是玩笑';相当于摩卡咖啡';s根级挂钩?

Javascript 什么是玩笑';相当于摩卡咖啡';s根级挂钩?,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我正在尝试使用Jest为Node.js后端应用程序编写测试。 后端通过mongoose实现了mongodb 我需要一个全局钩子,在运行所有测试文件中的所有测试之前,我可以在其中连接到数据库 在摩卡,我可以轻松做到: 您还可以选择任何文件并添加“根”级挂钩。例如,在所有descripe()块之外添加beforeach()。这将导致对beforeach()的回调在任何测试用例之前运行,而不管它所在的文件是什么(这是因为Mocha有一个隐含的descripe()块,称为“根套件”) 例如,我可以创建一

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

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

在摩卡,我可以轻松做到:

您还可以选择任何文件并添加“根”级挂钩。例如,在所有
descripe()
块之外添加
beforeach()
。这将导致对
beforeach()
的回调在任何测试用例之前运行,而不管它所在的文件是什么(这是因为Mocha有一个隐含的
descripe()
块,称为“根套件”)

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

const mongoose=require('mongoose')

上述操作将在所有测试文件中的所有测试之前和之后运行

如何使用jest执行上述操作?

jest API为此提供了一些功能

它与摩卡共享顶级隐含
descripe()
块的概念,其他块不一定要放在
descripe
中,包括
之前的
之后的


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

谢谢。但是我的意思是在所有测试文件中的所有测试之前和之后都要有一个根
before
afterAll
。这是可能的吗?您可以将它们移动到公共模块(testHelper)中,并将其导入每个测试文件中,或者使用全局*配置选项。
// ./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();
});