我有一个使用 jest 的端到端测试,它通过 web3 将几个以太坊合约部署到 ganache 并与它们通信。
jest 的测试非常慢,如果直接运行它而不用 jest 需要 10 秒,则需要 1 多分钟。我创建了一个新的干净项目来隔离这个测试,它是项目中唯一的测试。
我遵循了开玩笑的故障排除指南并尝试了所有与性能相关的技巧,例如--runInBand
,但它们的效果可以忽略不计。
Jest 在虚拟机中运行,这使得加密计算非常慢。由于 web3 包含大量加密计算、签名等,因此这种开销会扼杀测试。
解决方案是将以下内容添加到 jest 配置文件中:
"extraGlobals": ["Math"]
有关更多信息,请参阅https://jestjs.io/docs/en/configuration#extraglobals-arraystring