Solidity

如何檢查 Truffle 測試中的事件?

  • October 30, 2019

檢查 Truffle 測試中是否觸發了事件的最佳方法是什麼?

我為此編寫了 truffle-assertions包。它有一個斷言來檢查事件是否已被發出。本質上,它類似於下面的答案,但它不需要檢查日誌的特定索引,並且它具有通過傳遞過濾器函式以直接方式添加複雜條件的選項。

npm install truffle-assertions

您可以在測試文件的頂部導入它:

const truffleAssert = require('truffle-assertions');

並在您的測試中使用它:

truffleAssert.eventEmitted(result, 'TestEvent', (ev) => {
   return ev.param1 === 10 && ev.param2 === ev.param3;
});

我寫了一篇部落格文章,詳細介紹了該功能,並提供了詳細的案例供進一步閱讀:使用 Truffle 測試 Solidity 智能合約時檢查事件

除了 Rosco 和 Nick 的回答之外,了解用於調試的–show-events 標誌也很有幫助。像這樣使用它:

truffle test --show-events

引用自:https://ethereum.stackexchange.com/questions/39171