Files
kitchen/test/integration/api_integration_test.dart
2026-04-10 06:41:08 +08:00

76 lines
2.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 创建时间: 2026-04-09
// 更新时间: 2026-04-09
// 名称: API集成测试
// 作用: 测试关键API接口的集成
// 上次更新内容: 初始创建
import 'package:flutter_test/flutter_test.dart';
import 'package:mom_kitchen/src/repositories/action_repository.dart';
import 'package:mom_kitchen/src/repositories/preference_repository.dart';
import 'package:mom_kitchen/src/services/api/api_service.dart';
import 'package:mom_kitchen/src/services/api/api_exception.dart';
void main() {
group('API 集成测试', () {
late ApiService apiService;
late ActionRepository actionRepository;
late PreferenceRepository preferenceRepository;
setUp(() {
apiService = ApiService();
actionRepository = ActionRepository();
preferenceRepository = PreferenceRepository();
});
test('ApiService 初始化测试', () {
expect(apiService, isNotNull);
});
test('ApiException 类型测试', () {
final exception = ApiException(
type: ApiExceptionType.rateLimited,
message: 'Rate limited',
statusCode: 429,
);
expect(exception.isRateLimited, isTrue);
expect(exception.statusCode, 429);
});
test('ActionRepository 初始化测试', () {
expect(actionRepository, isNotNull);
});
test('PreferenceRepository 初始化测试', () {
expect(preferenceRepository, isNotNull);
});
// 注意这些测试需要真实的API连接在CI环境中可能需要mock
// 这里只测试初始化和基本逻辑,不进行实际网络请求
});
group('响应格式适配器测试', () {
test('extractList 测试', () {
final data1 = {'list': [1, 2, 3]};
final data2 = {'items': [4, 5, 6]};
final data3 = {'candidates': [7, 8, 9]};
final data4 = {'recipe_view': [10, 11, 12]};
// 由于ResponseAdapter在另一个文件这里只测试数据结构
expect(data1['list'], isNotNull);
expect(data2['items'], isNotNull);
expect(data3['candidates'], isNotNull);
expect(data4['recipe_view'], isNotNull);
});
test('extractItem 测试', () {
final data1 = {'item': {'id': 1}};
final data2 = {'recipe': {'id': 2}};
final data3 = {'best_match': {'id': 3}};
expect(data1['item'], isNotNull);
expect(data2['recipe'], isNotNull);
expect(data3['best_match'], isNotNull);
});
});
}