Capacitor プラグインをモックする
アプリケーション内でユニットテストを作成する場合、 テスト対象のユニットに対する外部依存関係のモックを作成するのがベストプラクティスです。これには、コンポーネントやサービスが使用している Capacitor プラグインも含まれます。
ほとんどのモッキングライブラリは、オブジェクトを取得して JavaScript プロキシでラップすることでモックを作成し、そのオブジェクト上のメソッドの呼び出しを調べたりメソッドの戻り値を制御したりします。しかし、CapacitorプラグインはJavaScriptレイヤーの中でプロキシとして実装されています。プロキシのプロキシを作成することはサポートされておらず、失敗します。この問題を回避するために、手動モックを使用することができます。
手動モック
手動モックを使用すると、JavaScript モジュール全体の機能を簡単にスタブ化することができます。その結果、テストが import { Storage } from '@capacitor/storage' を実行すると、本当の Storage JavaScript proxy object をロードする代わりに、以下のようなものをロードすることになります。
export const Storage = {
async get(data: { key: string }): Promise<{ value: string | undefined }> {
return { value: undefined };
},
async set(data: { key: string; value: string }): Promise<void> {},
async clear(): Promise<void> {},
};
これはプロキシオブジェクトではなくプレーンなJavaScriptオブジェクトなので、スパイするのは非常に簡単です。また、モックであるため、ネイティブ呼び出しを試みません。これにより、Capacitorプラグインを使用するコードをテストする際に、手動モックの使用が理想的な選択となります。