将 jest 与 web3 和 ganache 一起使用时测试很慢
Posted
技术标签:
【中文标题】将 jest 与 web3 和 ganache 一起使用时测试很慢【英文标题】:Tests slow when using jest with web3 and ganache 【发布时间】:2020-09-04 04:13:24 【问题描述】:我有一个使用 jest 的端到端测试,它通过 web3 将几个以太坊合约部署到 ganache 并与它们通信。
jest 的测试非常慢,如果直接运行它而不用 jest 需要 10 秒,则需要 1 分钟以上。我创建了一个新的干净项目来隔离这个测试,它是项目中唯一的测试。
我按照开玩笑的troubleshooting 指南尝试了所有与性能相关的技巧,例如--runInBand
,但效果微乎其微。
【问题讨论】:
欢迎来到 ***。请通过tour 环顾四周,阅读HELP center,然后阅读How to 、What types of questions should I avoid asking? 并提供MCVE: Minimal, Complete, and Verifiable Example。如果周围的人可以轻松阅读并理解您的意思或问题所在,他们将更愿意提供帮助:) 【参考方案1】:Jest 在 VM 中运行,这使得加密计算非常缓慢。由于 web3 包含大量加密计算、签名等,因此这种开销会扼杀测试。
解决方案是将以下内容添加到 jest 配置文件中:
"extraGlobals": ["Math"]
欲了解更多信息,请参阅https://jestjs.io/docs/en/configuration#extraglobals-arraystring
【讨论】:
以上是关于将 jest 与 web3 和 ganache 一起使用时测试很慢的主要内容,如果未能解决你的问题,请参考以下文章
在 ganache 上调用函数时出现 Web3.py abi keyerror