【发布时间】:2022-10-09 12:22:59
【问题描述】:
我正在尝试从 @openzeppelin/test-helpers 复制 expectEvent.inTransaction() 以用于安全帽。
场景:token 正在从 owner 转移到 receiverContract。我想检查接收者 Contract 是否发出了 Received 事件。
交易看起来像这样,由所有者发起。
const tx = await token.transferFrom(
owner.address, // <- From this wallet
receiverContract.address, // <- To this contract
tokenId,
{
from: owner.address,
}
);
该测试显示令牌发出了Transfer 事件。
await expect(tx)
.to.emit(this.token, "Transfer")
.withArgs(owner.address, receiverContract.address, tokenId);
但是我想写这样的东西......
await expect(tx) // <- Not sure what to put here
.to.emit(receiverContract, "Received") // <- This may also be off
.withArgs(token, owner.address, tokenId, null);
或者,我可以查看接收者的收据对象,但我不知道如何得到它......通常它是通过......
const tx = await token.transferFrom(owner.address, receiverContract.address, tokenId, {from: owner.address});
const receipt = await tx.wait();
console.log("receipt", receipt); // <- This will show an events array
// which I can check. But how do I get this same receipt object for
// the receiverContract
【问题讨论】:
标签: ethereum solidity hardhat openzeppelin