Контракт о твердости Ethereum - тайм-ауты Mocha на web3.eth.Contract метод send () - PullRequest
1 голос
/ 09 апреля 2019

В настоящее время я изучаю Солидность и пытаюсь составить простой контракт. Я также пытаюсь использовать среду Mocha для проверки смарт-контракта перед развертыванием. Тестовый код приведен ниже:

const assert = require("assert");
const ganache = require("ganache-cli");
const Web3 = require("web3");
const { interface, bytecode } = require("../compile");

const provider = ganache.provider();
const web3 = new Web3(provider);

let accounts;
let inbox;

beforeEach(async () => {
  // Get a list of all accounts
  accounts = await web3.eth.getAccounts();

  // Use one of those accounts to deploy the contract
  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);
  });
});

Тест не пройден и время ожидания:

> mocha

  Inbox
    1) "before each" hook for "deploys a contract"


  0 passing (2s)
  1 failing

  1) "before each" hook for "deploys a contract":
     Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

Я заметил, что тест пройден, если я закомментирую аргумент send ():

// .send({
//   from: accounts[0],
//   gas: "1000000"
// });

Так что проблема должна быть с использованием этого метода. Не уверен, что это асинхронная проблема.

1 Ответ

2 голосов
/ 11 апреля 2019

Я решил это путем понижения web3 до 1.0.0-beta.37. Похоже, версия 1.0.0-beta.51 глючит.

...