Тестирование событий в контрактах Solidity с использованием Truffle - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь проверить, происходит ли событие, но тест проходит независимо от того, что является вводом.

Я предполагаю, что я что-то делаю неправильно, ожидая результата и что он только что прошел тест и, таким образом,никогда не подтверждается в ложь.

Мой тест выглядит следующим образом (acc2 - это const, содержащий адрес):

it('Should emit an event on this call.', async () => {
    const testingOraclize = await TestingOraclize.new()
    let actual = await testingOraclize.myFunc({from:acc2})
    await truffleAssert.eventEmitted(actual , 'ParticipateStatus', async (res) => {
      return res._statusCode.toNumber() === 0;
    })
  });

Мой импорт в файле тестирования:

const TestingOraclize = artifacts.require('contracts/BetBank.sol');
const assert = require("chai").assert;
const truffleAssert = require('truffle-assertions');

Событие в контракте Solidity

event ParticipateStatus(uint8 _statusCode, address _owner, address _participant);

MyFunc (адреса [msg.sender] действительно разрешают в true):

function MyFunc() external payable {
    if (addresses[msg.sender]) {
      emit ParticipateStatus(0, allRunningBets[_betListIndex].betPlacer, msg.sender);
      return;
    }
}

Чего мне здесь не хватает?

1 Ответ

0 голосов
/ 11 декабря 2018

Я полагаю, вам нужно добавить await для строки ниже, а также обещание, которое необходимо решить.Поскольку вы не ждете здесь выполнения обещания, похоже, что элемент управления переходит на следующую строку, которая случается при вашем событии.

let actual = await testingOraclize.myFunc({from:acc2})

Редактировать 1:

Удалите асинхронный режим и ждите в функции truffleAssert.

...