Flutter Secure Storage Mock Throws type 'Null' is not a subtype of type 'Future<String?>'
- 主要语言
- Dart
- 星标
- 702
- 派生
- 88
- PR 合并指标
- 30 天内没有已合并 PR
描述
Hello, could someone suggest me an idea how to solve this?
When im trying to mock flutter secure storage i get this error " type 'Null' is not a subtype of type 'Future "
-This is my storage
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
abstract class IStorage {
Future saveData(String value, String key);
Future getId(String key);
}
class MyStorage implements IStorage {
MyStorage(this._storage);
final FlutterSecureStorage _storage;
@override
Future getId(String key) async {
return await _storage.read(key: key) ?? 'No data founded';
}
@override
Future saveData(String value, String key) async {
await _storage.write(key: key, value: value);
}
}
-My Service
import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:fixed/shared/storage.dart';
import 'package:flutter/cupertino.dart';
class ApiService {
final String _baseURL = 'https://jsonplaceholder.typicode.com/';
Dio _dio = Dio(BaseOptions());
final IStorage _storage;
ApiService(this._storage, {Dio? dio}) {
_dio = dio ?? Dio();
_dio.options.baseUrl = _baseURL;
}
Future get() async {
String id = await _storage.getId('id');
final response = await _dio.get('${_baseURL}posts/$id');
debugPrint(json.encode(response.data));
return json.encode(response.data);
}
}
My Test File
import 'package:dio/dio.dart';
import 'package:fixed/api/api_service.dart';
import 'package:fixed/shared/storage.dart';
import 'package:fixed/store/store1.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:http_mock_adapter/http_mock_adapter.dart';
import 'package:mocktail/mocktail.dart';
class MockStorage extends Mock implements IStorage {}
class MockStorage2 extends Mock implements MyStorage {}
class MockFlutterSecureStorage extends Mock implements FlutterSecureStorage {}
void main() {
final dio = Dio();
final dioAdapter = DioAdapter(dio: dio, matcher: const UrlRequestMatcher());
late ApiService service;
late MockFlutterSecureStorage mockSecureStorage;
setUp(() {
mockStorage = MockStorage();
mockSecureStorage = MockFlutterSecureStorage();
dio.httpClientAdapter = dioAdapter;
service = ApiService(dio: dio, MyStorage(mockSecureStorage));
});
void mockData() {
dioAdapter.onGet('https://jsonplaceholder.typicode.com/posts/1', (request) {
return request.reply(200, {'data': 'sucessfull'});
});
}
void mockGetId() {
when(() => mockStorage.getId('id'))
.thenAnswer((invocation) => Future.value('1'));
}
group('Test Service', () {
test('Test endpoint', () async {
//IT THROW ERROR
when(() => mockSecureStorage.read(key: 'íd')).thenAnswer((_) async => '');
final data = await service.get();
expect(data, equals('{"data":"sucessfull"}'));
verify(() => mockSecureStorage.read(key: 'id')).called(1);
});
});
}
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。