スマートコントラクトをテストしてみよう
💻 部屋を登録・取得する機能をテストしてみよう
前回までのレッスンで、部屋を登録・取得するスマートコントラクトが作成できました。このレッスンでは、実際に機能しているかターミナル上で確認をしていきます。
テストは以下の2つの方法があります。
- テスト用の関数を走らせて、思った通りの挙動をするか一気にテストする
- 実際にデプロイをしてターミナル上から関数を動かして確認する
ここでは、スマートコントラクト内のメソッドがどのように呼び出され、結果が返ってくるのかを実感するために、2. の方法でテストを 行いたいと思います。
👤 NEAR testnet のアカウントを作成する
デプロイをするには、NEAR testnetのアカウントが必要です。こちらから作成してください。既にお持ちの方は、こちらのステップを飛ばしていただいて構いません。
✅ デプロイをしてテストする
ここからは、ターミナルで操作をしていきます。コマンドを実行する階層は、near-hotel-booking-dapp/contract
になります。
まずは、Rust
で書かれたスマートコントラクトをコンパイルしてWasm
のファイルを生成します。
以下のコマンドをターミナルで実行しましょう。
cargo build --target wasm32-unknown-unknown --release
こ のような出力があると、成功です。
Finished release [optimized] target(s) in 0.83s
実際にファイルが生成されているかを確認します。
ls ./target/wasm32-unknown-unknown/release | grep hotel_booking.wasm
ファイル名が表示されるはずです。
hotel_booking.wasm
次に、スマートコントラクトのデプロイを行います。ここからは、環境構築時にインストールをしたNEAR CLI
を使ってターミナルから直接NEARネットワークを操作していきます。
まずは、ログインをします。ターミナルで以下のコマンドを実行します。
near login
今回は、サブアカウントにスマートコントラクトをデプロイしてテストを行いたいと思います。サブアカウントを使用するメリットとしては、スマートコントラクトを更新した際にサブアカウントを簡単に消去・再作成して、ゼロから始めることができるためです。ゼロから始める理由は、後ほど説明します。
サブアカウントを作成します。
near create-account ${SUBACCOUNT_ID}.${ACCOUNT_ID} --masterAccount ${ACCOUNT_ID} --initialBalance 5
例えば、このように実行します。
near create-account contract.hotel_booking.testnet --masterAccount hotel_booking.testnet --initialBalance 5
⚠️ 以降では、下記のように実際のアカウントIDを指定してコマンドを実行します。適宜ご自身のアカウントIDに読み替えてください。
- スマートコントラクトをデプロイするサブアカウント :
contract.hotel_booking.testnet
- 部屋のオーナーアカウント :
hotel_booking.testnet
サブアカウントにスマートコントラクトをデプロイします。
near deploy --wasmFile target/wasm32-unknown-unknown/release/hotel_booking.wasm --accountId contract.hotel_booking.testnet
以下のように表示されたらデプロイは成功です!
Transaction Id 4QjCzpcZZ3Yj28wqCUEVtbV313duUXMN5nnWXBHM5GC7
To see the transaction in the transaction explorer, please open this url in your browser
https://explorer.testnet.near.org/transactions/4QjCzpcZZ3Yj28wqCUEVtbV313duUXMN5nnWXBHM5GC7
Done deploying to contract.hotel_booking.testnet
🎓 NEAR CLI でメソッドを呼び出す方法について
View
メソッドとChange
メソッドで、引数の指定やオプションの種類が異なります。以下はコマンドの例になります(詳しくはこちら)
View
メソッド
near view [contractName] [method_name] [{ args ]]
Change
メソッド
near call [contractName] [method_name] [{ args }] [--accountId]