Mock3 リリース

July 2, 2020 · 金 大男

Mock 3 Head Photo by Javi on Unsplash

私はMock3をリリースできて本当にうれしく思います。 このツールの目的は、UIテストの自動化を可能にし、DAppの開発をスピードアップすることよって開発者を支援することです。 それでは詳しく見てみます。

下の図は普段のトランザクションを行う際に署名をする手順です。

TX with Web3

MetaMaskを使用してトランザクションに署名すると、開発者は自分でトランザクションに使われるアカウントを繰り返し探したり変更する必要があるかもしれません。

MultiBaas TX with Web3

Mock3は、開発者に代わってトランザクションに使われるアカウントを事前に設定し、自動的に署名することでこれを繰り返して行う負担を取り除くことができます。

TX with Mock3

以下の例は、Mock3を実際のプロジェクトに使う時のコードです。この設定では、Mock3はアプリケーションのテスト時にのみ使用されます。本番環境では、既存のWeb3プロバイダーを引き続き使用します。

import { Mock3 } from 'mock3';

// Mock3を使いたいときはifステートメントを用いて導入することができます。
// この例では、環境変数NODE_ENVが'test'と同じ場合のみMock3をすることにします。
let web3;
if (NODE_ENV === 'test') {
  // Infura、Ganache、Local、または独自のJSON RPCを設定することができます。
  // 設定しない場合、デフォルトはRinkebyネットワークに繋ぎます。
  web3 = new Mock3('YOUR.RPC.URL');

  // プライベートキーの配列または一つの値でも設定可能です。
  web3.setSigner(['0x3afe...', '0xf2f1...']);

  // 実際にMetaMaskから選択したように特定のアカウントを設定したり、すべてのアカウントを取得したりすることもできます。
  web3.setAccountIndex(2);
} else {
  web3 = window.web3;
}

const accounts = await web3.listAccounts();

これで準備ができました! 🎉🎉 これからはテストを行う際にはMetaMask使う手間が完全になくなりました。

MultiBaas TX with Mock3

もっと詳しい情報については、Devcon 5での発表されたライトニングトークをご覧ください。 DApp開発をお楽しみください!