Как выполнить модульное тестирование соединения Firebase, когда код написан в Bloc-шаблоне? - PullRequest
1 голос
/ 15 июня 2019

Я написал свой кодовый шаблон 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
...