truffleでEthereum Baseのdappを作る(4)

5)単体TEST ./test/hoge.js の内容


assert, ganache-cli,web3 の組み込み

web3にganache-cliとの接続を確立する provider を組み込む
providerをコンセントでweb3に差し込むイメージ

truffle compile で作成しておいた MyProject.json を読み込む
MyProject.json をテキストエディタで開いてみると ‘abi’ , ‘bytecode’ が定義されていることが確認できる
abi :contract の InterFace この中の定義情報を経由して、contract に access する
bytecode:Ethereum仮想マシンが使う機械語

myprojectのinstance を格納する

ganache-cli が提供してくれる TEST用の account を格納する
これは10個ある。 account[0] – account[9]

describe 内の各 it(test項目) を実行する前に myproject instance を作成する
ただし、ブロックチェーンの特性上、待機時間が発生するので非同期で処理する必要がある
以前であれば ajax を使用し CallBack関数を使用する必要があったが
web3@1.0.0-beta.26 で async , await を使用できる

ganache-cliが提供してくれる TEST用accountを取得する

MyProject contract の instance を取得
web3.eth.Contract の構文は web3.eth.Contract(abi,’contract address’)
abi:compiledMyProject.abi
contract address は ganache-cli に deplyo時に取得するため
bytecode と sender(accounts[0]) を渡している。
gas はTESTでは気前よく5,000,000 くらい

TESTの定義 個別TEST項目(it) を内包している

1つのTEST項目 {} 内にTEST内容を書いていく

ganache-cli が提供してくれた accounts を LIST表示
**毎回固定

myproject に address があるなら -> instance が作られたなら OK

account[0]が myproject の public 変数 message を call し 変数 msg に格納
**別に accounts[5] とかでもここでは OK

msg変数の中が ‘Initial Message’ と等しいか、確認
同じならば何もしない
同じでなければ Error を console に出す
その時 ‘STEP01′ も出してくれる

assert.equal(msg,’Initial Message’,’STEP01′); は
別に
assert.equal(msg,’Initial Message’);
でも OK