Я написал свой кодовый шаблон Bloc на основе этой статьи. В моем коде мне нужно подключиться к базе данных в реальном времени и извлечь из нее некоторые данные. Но, к сожалению, я не могу написать для него безошибочный модульный тест.
Это мой класс 100 Res/filename_api_provider
(на основе вышеуказанной ссылки), который обеспечивает критерии подключения к firebase:
class filenameApiProvider {
var response;
Future<fileModel> fetchList() async {
DatabaseReference ref = FirebaseDatabase.instance.reference();
await ref.child("exercises").once().then((DataSnapshot snap) {
response = snap.value;
});
if (response != null) {
return fileModel.fromJsonWorkouts(response);
} else {
throw Exception('Failed to load workout library api’s');
}
}
и если ответ приходит с сервера Firebase, я передаю его классу модели, чтобы заполнить некоторый список и показать его в пользовательском интерфейсе
Я пытался написать тест для этого класса, и это моя попытка:
void main() {
test('fetch data', () async {
var obj = new filenameApiProvider();
fileModel result = await obj.fetchWorkoutList();
expect(result, isNotNull);
});
}
Но это ошибка, которую я получаю после запуска теста:
MissingPluginException(No implementation found for method Query#observe on channel plugins.flutter.io/firebase_database)
package:flutter/src/services/platform_channel.dart 300:7 MethodChannel.invokeMethod
===== asynchronous gap ===========================
dart:async _AsyncAwaitCompleter.completeError
package:flutter/src/services/platform_channel.dart MethodChannel.invokeMethod
===== asynchronous gap ===========================
dart:async _asyncThenWrapperHelper
package:flutter/src/services/platform_channel.dart MethodChannel.invokeMethod
package:firebase_database/src/query.dart 53:38 Query._observe.<fn>
dart:async Stream.first
package:firebase_database/src/query.dart 90:55 Query.once