簡體   English   中英

Flutter 測試模擬 GraphQL 突變未找到存根

[英]Flutter Test Mock GraphQL mutation doesn't find stub

我在我的 flutter 應用程序中使用 mockito 和 graphql 包,以便為我的 Z572CDA51902B55017C0E1A2B2 數據庫編寫測試而不實際執行 aFDB04B4Z 突變。 Mockito 的工作方式是我設置了一個“when”子句,這樣每當在我的 mocker 上調用該特定方法時,它就會使用我定義的方法而不是正常運行的方法。

我已經為 client.mutate() 的模擬 GraphQLClient 定義了何時。 但是,當我調用 mutate 時,它說沒有定義模擬。 我已經在網上進行了研究,並且有幾個人通過確保他們定義了何時首先解決了這個問題,我已經這樣做了,但它仍然沒有解決我的問題。 這是我的初始化和包

import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';

import 'package:graphql/client.dart' as graphql;
import 'login_screen_test.mocks.dart';

@GenerateMocks([graphql.GraphQLClient])

和客戶和突變

  final mockClient = MockGraphQLClient();
  MutationOptions loginMutation = MutationOptions(
    document: gql(
      r'''
        mutation Login($email: String!, $password: String!) {
          login(input: {email:$email password:$password}) {
            accessToken
            refreshToken
            user {
              id
            }
          }
        }
      ''',
    ),
    variables: <String, dynamic>{
      'email': 'doodle@noodle.com',
      'password': 'password',
    },
  );

現在是測試用例

  test('Login success if done correctly', () async {
    when(mockClient.mutate(loginMutation)).thenAnswer((_) async => graphql.QueryResult(source: null, data: {'login': {'accessToken': 'ooglyboogly', 'refreshToken': 'mtnDew'}}));
    await userRepo.loginEmailPassword(mockClient, email: 'doodle@noodle.com', password: 'password');
    expect(store.state.auth.accessToken, isNot(''));
  });

確保生成了模擬文件。 文件名應該是這樣的:'your_test_file_name.mocks.dart'

如果找不到生成的模擬文件,請嘗試運行

flutter pub run build_runner build

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM