将 jest 与 web3 和 ganache 一起使用时测试速度很慢

Tests slow when using jest with web3 and ganache

我有一个使用 jest 的端到端测试,它通过 web3 将几个以太坊合约部署到 ganache 并与它们通信。

开玩笑的测试很慢,花了一分钟多,运行直接不开玩笑要10秒。我创建了一个新的干净项目来隔离这个测试,它是项目中唯一的测试。

我遵循了开玩笑 troubleshooting 指南并尝试了所有与性能相关的技巧,例如 --runInBand,但它们的效果可以忽略不计。

Jest 在 VM 中运行,这使得加密计算非常慢。由于 web3 有大量的加密计算、签名等,这种开销会扼杀测试。

解决方案是将以下内容添加到 jest 配置文件中:

"extraGlobals": ["Math"]

有关详细信息,请参阅 https://jestjs.io/docs/en/configuration#extraglobals-arraystring