見出し画像

MOVE言語 チュートリアルStep_2

前回のチュートリアルStep_1はこちら

どうも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 の構文


次回も引き続きチュートリアルをやっていきます!
よろしくお願いします!

この記事が気に入ったらサポートをしてみませんか?