MOVE言語 チュートリアルStep_2
どうもTABEです!
前回はMOVEのCoinを作るコードのチュートリアルをやりました。
今回はユニットテストの回です。
moveチュートリアルのファイルをダウンロードしていない方は
前回の記事を参考に、環境構築進めてください。
cd <自分のディレクトリ>/move/language/documentation/tutorial/step_1/BasicCoin
以下のコマンドでユニットテストをする
move test
実行すると以下の様に成功が表示される
では、コードを見ていきましょう!
コメントで解説を入れています。
Step_2のコード(コメントあり)
module 0xCAFE::BasicCoin {
// テスト用のコンパイルにのみ含まれる。
// Rust の #[cfg(testing)] に似ているらしい。。MoveStdlib パッケージから `Signer` モジュールをインポートします。
#[test_only]
// useは「他のモジュールへのエイリアスを作成するためのもの」と書かれていたが、よくわからない
// 多分上記コメントより`Signer` モジュールをインポートしているのだと思う
use std::signer;
// チュートリアル1と同じコード Coinの構造体
struct Coin has key {
value: u64,
}
// チュートリアル1と同じコード Coinを特定のアドレスに対してMINTする関数
public fun mint(account: signer, value: u64) {
move_to(&account, Coin { value })
}
// ユニットテストを宣言します。このテストは `account` という名前の署名者を受け取り、そのアドレスは `0xC0FFEE` です。
// アドレスは `0xC0FFEE` です。
#[test(account = @0xC0FFEE)]
// テスト用の関数
fun test_mint_10(account: signer) acquires Coin {
// 変数にアドレスを格納 Signerモジュールからaddress_ofでアドレスを呼び出す。
let addr = signer::address_of(&account);
// 上記で宣言した mint,関数を呼ぶ
mint(account, 10);
// assert!より`addr` の `Coin` リソースの値が `10` であることを確認します。
assert!(borrow_global<Coin>(addr).value == 10, 0);
}
}
コードキャプチャ(色付きの方がみやすいので貼り付けておきます!)
以上です。
今回つまづいたuse構文のリンクを貼っておきます!
use の構文
次回も引き続きチュートリアルをやっていきます!
よろしくお願いします!
この記事が気に入ったらサポートをしてみませんか?