Я пишу несколько тестов Solidity с использованием модуля Mocha.Приведенный ниже тест завершается с этой ошибкой, несмотря на то, что вызывается функция done () и обещание разрешается (закомментированные операторы console.log () показывают, что Promise из включенного модуля compile.js действительно разрешается).Возможно, я неправильно интерпретирую ошибку?Я новичок в Node.js, поэтому мои извинения, если я приготовил беспорядок.
1) "before each" hook for "Deploy a contract":
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
const assert = require('assert');
const ganache = require('ganache-cli');
const Web3 = require('web3');
const web3 = new Web3(ganache.provider());
let accounts;
let inbox;
beforeEach(async (done) => {
// Get a list of all accounts
accounts = await web3.eth.getAccounts();
// console.log(accounts);
const generate = require('../compile');
await generate()
.then(async data => {
var interface = data.interface;
var bytecode = data.bytecode;
// console.log('ABI ' + interface);
// console.log('BIN ' + bytecode);
inbox = await new web3.eth.Contract(JSON.parse(interface))
.deploy({data: bytecode, arguments: ['Greetings!']})
.send({from: accounts[0], gas: '1000000'});
});
done();
});
describe('Inbox testing', () => {
it('Deploy a contract', () => {
console.log('Contract ' + inbox);
});
});
Функция generate (), импортированная из compile.js, возвращает обещание
function generate() {
return new Promise((resolve, reject) => {
...
})
})
}
module.exports = generate;