アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

OpenZeppelin(zeppelin-solidity)のtest/helpersを使う方法

更新

この記事の内容は古いため、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のモジュールに取り入れるかもとかなんとか書いてた。