gpt4 book ai didi

javascript - 使用 Truffle 测试 Solidity 合约中的事件

转载 作者:行者123 更新时间:2023-11-29 23:11:59 24 4
gpt4 key购买 nike

我正在尝试测试事件是否发生,但无论输入是什么,测试都会通过。

我想我在等待结果时做错了什么,结果只是通过测试,因此永远不会断言为假。

我的测试看起来像这样(acc2 是一个包含地址的常量):

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(addresses[msg.sender] 确实解析为 true):

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

我在这里错过了什么?

最佳答案

我相信您需要为下面的行添加 await 以及它实际上是一个需要解决的 promise 。因为,你不是在这里等待 promise 的实现,看起来控件正在跳转到下一行,这恰好是你的事件触发的。

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

编辑 1:

移除 truffleAssert 函数中的异步和等待。

关于javascript - 使用 Truffle 测试 Solidity 合约中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53726686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com