76 lines
2.4 KiB
Dart
76 lines
2.4 KiB
Dart
// 创建时间: 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);
|
||
});
|
||
});
|
||
}
|