Ошибка тестирования контракта Mocha: Done() вызывается несколько раз в перехвате

#javascript #mocha.js #smartcontracts

#javascript #mocha.js #smartcontracts

Вопрос:

Привет, я новичок в мире смарт-контрактов, и у меня возникла проблема с mocha. Это тест, над которым я работаю:

-РЕДАКТИРОВАТЬ-

 const UsersContract = artifacts.require("../contracts/UsersContract.sol");

contract("TestUsersContract", async accounts => {
    let instance;

    beforeEach('setup contract for each test', async () => {
        instance = await UsersContract.deployed();
    });

    it('should retrieve User', async () => {
        instance.join(1, "John Doe");
        instance.send({ from: accounts[0], gas: 50000 });

        let user = await instance.getUser(accounts[0]);
        assert.equal(user[0].toNumber(), 1);
        assert.equal(user[1], 'John Doe');
    });
});
  

Это вызывает у меня следующие ошибки:

     1) Uncaught Error: the string "abort(Error: Given input "[object Object]" is not a number.). Build with -s ASSERTIONS=1 for more info." was thrown, throw an Error :)
    2) Error: done() called multiple times in hook
  

Я не знаю почему, но когда я реорганизую тест до неасинхронной версии:

 it('should retrieve User', () => {
    instance.join(1, "John Doe");
    instance.send({ from: accounts[0], gas: 50000 });

    instance.getUser(accounts[0]).then( user => {
        assert.equal(user[0].toNumber(), 1);
        assert.equal(user[1], 'John Doe');
    });
});
  

Все проходит гладко, и тесты выполняются так, как ожидалось. Почему это происходит? Можно ли создать async/await версию здесь или я должен .then() всегда придерживаться версии?

Немного просвещения было бы неплохо, спасибо.

Комментарии:

1. Выдается ли ошибка, когда нет другой ошибки?

2. Нет, всегда сопряжены.

3. Можете ли вы поделиться дополнительным кодом? Я не могу воспроизвести проблему. Кроме того, если вы поймаете исключение, ошибка все еще происходит? Возможно, вызов трассировки ошибки done() , и именно поэтому появляется ошибка.

4. @J.F. Отредактировано со всем кодом.

5. привет .. есть новости об этом? здесь та же проблема .. она работает на Mac, но при запуске на сервере выдает мне эту ошибку .. используя selenium безголовый chrome