Solidity
如何檢查 Truffle 測試中的事件?
檢查 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