更新
この記事の内容は古いため、20180417現在では使えません。最新での導入方法についてはこちらにまとめています。
y-nakajo.hatenablog.com
OpenZeppelin(zeppelin-solidity)はEthereumのContract作るなら使わないと損だよ!ってぐらい便利なContractのライブラリや雛形が揃ってるプロジェクトです。
で、そのOpenZeppelinですがContractだけじゃなくて実はtest/helpersもかなり充実してます。ですが、実はこのtest/helpersをtruffle testで使おうとするとbabelの壁が立ちはだかりなかなかうまくいかなかったりします。僕のようなnode初心者には無理でした。。。
ですが、これを簡単に使えるようなnode moduleを見つけました!
github.com
製作者様に感謝です。今回はこれの使い方を紹介します。
使い方は簡単で、まずは
npm install babel-polyfill npm install lk-test-helpers
でモジュールをインストールして
次にtruffle.jsの先頭でbabel-polyfillをロードする
require("babel-polyfill") // これを先頭に追加
babel-polyfillがないとReferenceError: regeneratorRuntime is not definedが出ちゃうので注意
最後にtest/helpersを使いたいテストで
const lkTestHelpers = require('lk-test-helpers'); const { advanceBlock, advanceToBlock, assertJump, ether, latestTime, increaseTime, increaseTimeTo, EVMThrow, expectThrow, hashMessage, timer, toPromise, transactionMined } = lkTestHelpers(web3)
として、使いたいhelperをロードするだけでOKです!
このモジュールを作った人曰く、どうせbabelでみんな変換するんだからhelpersだけ別モジュールにしてtranspil後のjsをロードさせるようにしたらええんでないの?ってことらしい。
そのうち、zeppelin-solidityのモジュールに取り入れるかもとかなんとか書いてた。