🍷

【Flutter】null safety対応版のMockitoの使い方

2021/04/09に公開

モックライブラリのmockitoが、バージョン5.0.0でDartのnull safetyに対応しました🎉これにともない、Mockitoの使い方が従来と少し変わったのでメモしておきます。

null safety対応以前と何が変わったか?

null safety対応版はモッククラスを自動生成して使うようになりました。

ここからは、具体的なコードの変更点をご紹介します。

まずは、コード生成のためのbuild_runnerパッケージをpubspec.yamlに追加します。

pubspec.yaml
 dev_dependencies:
   flutter_test:
     sdk: flutter
   mockito: ^5.0.0
+  build_runner:

続いて、テストクラスの変更を行います。@GenerateMocksを使ってモック化したいクラスを定義します。以下の例だとCatクラスだけモック化していますが、@GenerateMocks([Cat, Dog, Bird])のように複数クラスをまとめてモック化することもできます。

- class MockCat extends Mock implements Cat {}

  // モッククラスを自動生成するためのアノテーション
+ ([Cat])
  void main() {
    var cat = MockCat(); // 一時的にコンパイルエラーになる
  }

この状態だと、モッククラスはまだ生成されていないのでコンパイルエラーになりますが、気にしないでください。続いて、以下コマンドでモッククラスを自動生成します。

$ flutter pub run build_runner build

あとは、自動生成されたモッククラスをインポートしてやればOKです。

  // 自動生成されるモッククラスをインポートする
+ import 'cat.mocks.dart';

  ([Cat])
  void main() {
    var cat = MockCat(); // コンパイルエラーが解消される
  }

以降は、これまでのMockitoの使い方と同じです。

参考リンク

Discussion