我有一个使用jest的端到端测试,通过web3将几个Ethereum合约部署到ganache上,并与它们进行通信。
这个测试在jest上的速度非常慢,在没有jest的情况下直接运行需要10秒,需要1分多钟。我新建了一个干净的项目,隔离了这个测试,这是项目中唯一的测试。
我按照jest 排除故障 指南,并尝试了所有与性能相关的提示,如 --runInBand
但它们的效果却可以忽略不计。
Jest在一个内部运行 虚拟机 这使得加密计算非常慢。由于web3的加密计算、签名等工作量很大,这个开销会杀死测试。
解决方法是在jest配置文件中添加以下内容。
"extraGlobals": ["Math"]
更多信息,请看 https:/jestjs.iodocsenconfiguration#extraglobals-arraystring。