felangel / felangel/mocktail

Flutter Secure Storage Mock Throws type 'Null' is not a subtype of type 'Future<String?>'

Ouverte
#168 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
question waiting for response
Langage dominant
Dart
Étoiles
702
Forks
88
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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);
});

});
}

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.