For example, testing for a transaction that reverted or an out of gas error etc.

What is the best practice for writing such tests? Specifically, I am using truffle test framework (mocha/chai).

  • You might find this answer useful (disclosure: I wrote it). Sep 7 '20 at 21:35
  • Actually I did come across that. However I was hoping that something more robust existed in the form of a library that has been vetted and tested by a significant amount of the community. Copying and pasting code like this seems a bit risky even if only for a tiny nuanced error; When money is at stake then it has to be near-perfect. I guess I'll use this if nothing else exists though. Sep 7 '20 at 21:39
  • 1
    Waffle has Chai matchers for events, reverts, etc. You can use it in conjunction with Truflfe.
    – Morten
    Sep 7 '20 at 21:44
  • @Morten This is great thanks! Why not post it as an answer? Sep 7 '20 at 21:48
  • Risky? That argument is relevant when dealing with on-chain code (Solidity), not off-chain code. Sep 8 '20 at 6:27

You can use Waffle's built-in Chai matchers to test for events, reverts, etc. It works with Truffle and Mocha out of the box, and supports any network provider with history support (like Ganache, BuidlerVM). You can find documentation here:

There are also experimental Jest matchers if you're looking to use Jest instead of Mocha and Chai.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.