将 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 一起使用时测试很慢的主要内容,如果未能解决你的问题,请参考以下文章

将 web3.js 与 Jest 一起使用时出错

JAVA WEB3J与ganache以太坊环境交互

在 ganache 上调用函数时出现 Web3.py abi keyerror

Solidity、solc、web3.js、Ganache 版本组合目前正在使用啥

Web3j 使用 Ganache 获取堆栈下溢错误

使用Ganache,web3js和remix在个人区块链上部署并调用合约