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