mocha 的单元测试错误:超过 20000 毫秒的超时

Posted

技术标签:

【中文标题】mocha 的单元测试错误:超过 20000 毫秒的超时【英文标题】:Unit test error with mocha: Timeout of 20000ms exceeded 【发布时间】:2019-10-30 04:00:27 【问题描述】:

当我尝试将合同发送到 Ganache 时出现超时错误。我的代码如下,

const assert = require('assert');
const ganache = require('ganache-cli');
const Web3 = require('web3');
const web3 = new Web3(ganache.provider());
const interface,bytecode = require('../compile');

let accounts;
let inbox;

beforeEach(async() => 
accounts = await web3.eth.getAccounts();
inbox = await new web3.eth.Contract(JSON.parse(interface))
  .deploy(data: bytecode,arguments:['Hi There !'] )
  .send(from: accounts[0], gas:'1000000');
);

describe("inbox", () => 
it('deploys a contract', () => 
    console.log(inbox);
 )
)

当我注释掉 send 方法(在下面提供)时,程序运行没有任何问题。但是,将其添加回来会引入超时错误。无论我为 mocha 超时分配多少时间,我仍然会遇到同样的错误。

.send(from: accounts[0], gas:'1000000');

关于超时有类似的帖子,如下所示, Error: Timeout of 2000ms exceeded. For async tests and hooks. Unit test with mocha and chai

Unit test error with mocha and chai Timeout of 2000ms exceeded. For async tests and hooks

Mocha testing with promises: Error: Timeout of 2000ms exceeded

Mocha exceeding 2000ms timeout when returning a promise

上述解决方案均不适合我(主要是关于增加超时)。此外,我按照另一个论坛的建议降级了 web3 库。然而,它也没有奏效。

您可以在a different forum 找到其他人发布的确切问题。显然,这个问题也没有得到任何可能的答案。

【问题讨论】:

尝试移除gas属性并检查 @SanjaySB 当gas limit被移除时返回错误(错误:base fee超过gas limit)。 solc、web3 版本是什么 @SanjaySB solc:0.4.26 和 web3:1.0.0-beta.55。但是,正如帖子中提到的,我降级了版本并重新编译。他们都没有工作。 你试过solc 0.4.25版了吗? 【参考方案1】:

我安装了 truffle v5.0.24 并开始使用解决了所有问题的 truffle 控制台。

【讨论】:

以上是关于mocha 的单元测试错误:超过 20000 毫秒的超时的主要内容,如果未能解决你的问题,请参考以下文章

使用 mocha 测试时超时 [重复]

Mocha/Sinon 测试猫鼬里面的快递

更改 mocha 的默认超时

mocha 单元测试中的 Highchart 导入错误

在mocha测试中调用异步函数如何避免超时错误:超过2000ms的超时

如何为 chai expect 提供 mocha 单元测试的自定义错误消息?