LoginSignup
1
0
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

graphql_codegenで生成したクラスをテスト実行時にモックする際の注意点

Last updated at Posted at 2024-01-21

Flutterのテストコードを実装する上で、クラスをモック化するのにmockitoを使うと思います。
通常のクラスであれば特に気にする必要はないのですが、graphql_codegenで生成したクラスを更に、mokitoでモック化したクラスにするためには、build_runnerの設定を変更する必要があります。

具体的に、build.yamlに以下のような記述を追加します。

global_options:
  graphql_codegen:
    runs_before:
      - mockito|mockBuilder

この記述がない場合、mockitoがgraphql_codegenで生成したクラスを読み込むことができず、意図したモック化ができません。
例えば以下のようなコードの場合、返却値の型は Future<Query$User> ですが、ビルドの設定を変更していない場合、モック化したクラスでは返却値の型は Future<dynamic> となってしまいます。

Future<Query$User> getUser(int id) async {
  final client = GraphQLClient(
    cache: GraphQLCache(),
    link: HttpLink('https://example.com/graphql'),
  );
  final result = await client.query$User(
    Options$Query$User(
      variables: Variables$Query$User(
        id: id,
      ),
    ),
  );
  return result.parsedData!;
}

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0