Javascript Jest在所有测试之前运行异步函数一次

Javascript Jest在所有测试之前运行异步函数一次,javascript,jestjs,Javascript,Jestjs,我想在服务器单元测试中使用jest(而不是mocha+chai)。 是否有一种方法可以在所有测试开始之前(出于初始化目的)只运行一次异步函数,而不是针对每个测试文件?还有,如果有一种方法可以在所有测试完成后运行某些东西?如果您使用npm执行jest测试,那么您可以在执行其他命令之前运行任何节点命令或任何可执行文件 "scripts": { "test": "node setup.js && jest" } 现在,您可以使用命令运行此命令 $ npm t 笑话提供和

我想在服务器单元测试中使用jest(而不是mocha+chai)。
是否有一种方法可以在所有测试开始之前(出于初始化目的)只运行一次异步函数,而不是针对每个测试文件?还有,如果有一种方法可以在所有测试完成后运行某些东西?

如果您使用npm执行jest测试,那么您可以在执行其他命令之前运行任何节点命令或任何可执行文件

"scripts": {
    "test": "node setup.js && jest"
  }
现在,您可以使用命令运行此命令

$ npm t
笑话提供和。与之相同,如果函数返回一个承诺,它将等待一个承诺的解析

beforeAll(() => {
  return new Promise(resolve => {
    // Asynchronous task
    // ...
    resolve();
  });
});
如果您有一些使用回调的现有测试代码,那么它也支持回调样式,尽管建议使用承诺

beforeAll(done => {
  // Asynchronous task
  // ...
  done();
});
此功能是通过
globalSetup
globalsearldown
配置添加的。 请看下面的例子

package.json(或在中)

{
...
“笑话”:{
“globalSetup”:“/scripts/jestGlobalSetup.js”
}
}
/scripts/jestGlobalSetup.js

module.exports=async()=>{
log('\nhello,这就在测试开始运行之前');
};

jest在新版本中提供了全局设置和拆卸选项。您可以为导出异步函数的安装和拆卸创建文件,并在jest配置中提供该路径,如下所示

"globalSetup": "setup-file-path",
"globalTeardown": "tear-down-file-path"

您可以进一步了解它

谢谢,但我正在寻找一个有趣的解决方案。就像摩卡咖啡可以让你把所有的东西放在一个全局范围内,我希望Jest也有类似的东西。虽然这个解决方案还可以,但它不会在
--watch
模式下运行。有什么Jest解决方案吗?这个答案已经过时了,听起来很不错,尤其是关于“如果函数返回一个承诺或是一个生成器,Jest会在运行测试之前等待该承诺得到解决”的re:Promissions。Jasmine是否有类似的解决方案?看起来Jasmine不支持承诺,但我特别使用了量角器,但是
done
回调对我不起作用,我在哪里可以找到在
之前
中声明它可以使用
done()
的文档?我只能发现它在等待好的答案,但不能满足请求的“仅一次,而不是每个测试文件”。这个答案是错误的,因为没有包含到源引用的链接,每个被否决的测试文件都会发生一次。这是正确的答案