iT邦幫忙

2022 iThome 鐵人賽

0
Web 3

Smart-Contract Language: Move系列 第 29

Day 29 Second Example - Create New Project part 2

  • 分享至 

  • xImage
  •  

本篇將會測試新建立的 package 是否正常
測試對程式碼非常重要,尤其區塊鏈。好的測試可以省掉許多精神和金錢。

測試函數可以寫在任何地方,但通常會儲存在 tests/{$MODULE_NAME}_tests.move 位置和命名。

撰寫測試

tests 位於根目錄底下,我們創建一個資料夾。

接著創建一個文件名為 user_info_tests.move,內容如下

#[test_only]
module sender::user_info_tests {
    use std::string::utf8;
    use std::signer;

    use sender::user_info;

    // test 屬性的這個命名參數允許為測試函數提供參數,也就是簽名者
    // 注意,應該與函數的參數命名相同
    #[test(user_account = @0x42)]
    public entry fun test_getter_setter(user_account: signer) {
        let username = b"MyUser";
        user_info::set_username(&user_account, username);

        let user_addr = signer::address_of(&user_account);
        // 斷言,需要一個表達式和自訂的失敗錯誤代碼
        assert!(user_info::get_username(user_addr) == utf8(username), 1);
    }
}

執行測試

在 root 層級執行此指令

$ ~/bin/aptos move test

不管成功或失敗,應該都會看到結果,如果一切順利會看到這畫面

INCLUDING DEPENDENCY AptosFramework
INCLUDING DEPENDENCY AptosStdlib
INCLUDING DEPENDENCY MoveStdlib
BUILDING UserInfo
Running Move unit tests
[ PASS    ] 0x42::user_info_tests::test_getter_setter
Test result: OK. Total tests: 1; passed: 1; failed: 0
{
  "Result": "Success"
}

如果失敗也沒關係,Move 會詳細跟你說哪邊出了問題

INCLUDING DEPENDENCY AptosFramework
INCLUDING DEPENDENCY AptosStdlib
INCLUDING DEPENDENCY MoveStdlib
BUILDING UserInfo
error[E02001]: duplicate declaration, item, or annotation
  ┌─ /Users/spock/Developer/move/userinfo/sources/Sender.move:6:22
  │
5 │     use std::string::{String, utf8};
  │                       ------ Alias previously defined here
6 │     use std::string::String;
  │                      ^^^^^^ Duplicate module member or alias 'String'. Top level names in a namespace must be unique

讓我們 Move to Day 30


上一篇
Day 28 Second Example - Create New Project
下一篇
Day 30 Second Example - Create New Project part 3
系列文
Smart-Contract Language: Move30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言