build_runner 不生成 filename.g.dart Flutter

问题描述 投票:0回答:1

我想对 api 进行单元测试,我按照 本教程 来实现它,但我得到了一个荒谬的错误。

我一整天都在为这个问题苦苦挣扎!

这里是解释:我的项目中需要有

mokito
api_client.g
文件。

每当我尝试使用此命令生成 mokito 文件时

flutter packages pub run build_runner build --delete-conflicting-outputs
都会生成 mokito 类,但我的
api_client.g.dart
消失并且不会重新生成。

我曾经能够使用以下命令生成

api_client.g.dart
文件:

flutter pub run build_runner build

我的 pubspec.yaml

name: app_store
description: A new Flutter project.

publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1

environment:
sdk: ">=2.15.1 <3.0.0"

dependencies:
flutter:
sdk: flutter

 flutter_localizations:
sdk: flutter
flutter_riverpod: ^1.0.3
cupertino_icons: ^1.0.2
shared_preferences: ^2.0.13
built_value: ^8.1.4
json_annotation: ^4.4.0
dio: ^4.0.4
package_info_plus: ^1.4.2
cached_network_image: ^3.2.0
url_launcher: ^6.0.18
intl: ^0.17.0
flutter_svg: ^1.0.3
lottie: ^1.2.1
pin_code_fields: ^7.3.0
image_cropper: ^2.0.3
image_picker: ^0.8.5+3
file_picker: ^4.6.1
device_info_plus: ^4.0.0
disk_space: ^0.2.1
flutter_rating_bar: ^4.0.1
device_apps: ^2.2.0
path_provider: 2.0.9
speech_to_text: ^5.6.0
app_installer: ^1.1.0
downloads_path_provider_28: ^0.1.2
permission_handler: ^8.3.0
mockito: ^5.3.1
build_runner: ^2.2.1
# freezed: ^2.0.3
http: ^0.13.4


flutter_lints: ^1.0.0

json_serializable: ^6.1.4
uni_links: ^0.5.1

dev_dependencies:
integration_test: 
sdk: flutter
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
generate: true
assets:
- assets/icons/
- assets/images/
- assets/animations/

fonts:
- family: iran_sans_x
  fonts:
    - asset: assets/fonts/iran_sans_x_ultra_light.otf
      weight: 100
    - asset: assets/fonts/iran_sans_x_thin.otf
      weight: 200
    - asset: assets/fonts/iran_sans_x_light.otf
      weight: 300
    - asset: assets/fonts/iran_sans_x_regular.otf
      weight: 400
    - asset: assets/fonts/iran_sans_x_medium.otf
      weight: 500
    - asset: assets/fonts/iran_sans_x_semi_bold.otf
      weight: 600
    - asset: assets/fonts/iran_sans_x_bold.otf
      weight: 700
    - asset: assets/fonts/iran_sans_x_extra_bold.otf
      weight: 800
    - asset: assets/fonts/iran_sans_x_black.otf
      weight: 900
- family: DanaFaNum
  fonts:
    - asset: assets/fonts/DanaFaNum-UltraLight.ttf
      weight: 100
    - asset: assets/fonts/DanaFaNum-Thin.ttf
      weight: 200
    - asset: assets/fonts/DanaFaNum-Light.ttf
      weight: 300
    - asset: assets/fonts/DanaFaNum-Regular.ttf
      weight: 400
    - asset: assets/fonts/DanaFaNum-Medium.ttf
      weight: 500
    - asset: assets/fonts/DanaFaNum-Bold.ttf
      weight: 600
    - asset: assets/fonts/DanaFaNum-DemiBold.ttf
      weight: 700
    - asset: assets/fonts/DanaFaNum-ExtraBold.ttf
      weight: 800
    - asset: assets/fonts/DanaFaNum-Black.ttf
      weight: 900

我的 Mokito 课程:

import 'package:app_store/data/model/responseModel/login_with_mobile_rm.dart';
import 'package:app_store/main.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:http/http.dart' as http;
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'api_test.mocks.dart';

final httpProvider = Provider<http.Client>((ref) {
return http.Client();
});
@GenerateMocks([http.Client])
void main() {
 testWidgets('200 response increments', (WidgetTester tester) async {
 final client = MockClient();
 when(client.get(Uri.parse('https://httpstat.us/200'))).thenAnswer(
  (value) async {
    return http.Response(LoginWithMobileRm().toJson().toString(), 200);
  },
);
await tester.pumpWidget(
  ProviderScope(
    overrides: [
      httpProvider.overrideWithValue(client),
    ],
    child: const MyApp(),
  ),
);
expect(1, 1);
});
}

我的api_client:

part 'api_client.g.dart';

abstract class ApiClient {
factory ApiClient(Dio dio, AppPreferencesHelper appPreferencesHelper,
{required String baseUrl}) = _ApiClient;

Future<BaseResponseModel<LoginWithMobileRm>> mobileLogin(
Map<String, String> map,
BuildContext context,
);
flutter unit-testing dart testing build
1个回答
0
投票

解决方案我已经尝试了上述所有建议,包括清理缓存和重新启动,但没有任何帮助。

只有这个有效:

  • 在 dev_dependency 下添加“hive_generator”包

然后添加

您想要生成的每个模型/文件上的“filename.g.dart”部分 适配器。

然后运行这两个命令:

  1. dart 运行 build_runner clean
  1. dart 运行 build_runner 构建

然后繁荣,一切都生成并且工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.