在测试中缺少MissingPluginException(在通道plugins.flutter.io/firebase_core上未找到方法Firebase#initializeCore的实现)

时间:2020-09-29 11:19:40

标签: firebase flutter flutter-test

我们正在使用新版本的FlutterFire,但在运行测试时遇到了一些问题,我们设法初始化Firebase,并添加了以下内容:

setUp(() async {
    TestWidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
  });

但是现在我们收到此错误消息:

MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core)
  package:flutter/src/services/platform_channel.dart 159:7  MethodChannel._invokeMethod

该应用程序在iOS和Android上均运行良好,只有在运行小部件测试时才会出现问题。我们已经尝试了Flutter稳定版和开发版频道。

1 个答案:

答案 0 :(得分:1)

我假设您正在执行单元测试或小部件测试。 只需看看插件本身如何is being tested

class FakeFirebaseAppPlatform extends Fake implements FirebaseAppPlatform {}

他们只是伪造对象。

为什么?因为此插件是使用方法通道实现的,并且在测试时您无法访问本机平台。您唯一的选择是模拟或伪造您与 Firebase 的交互:

  1. 由于插件的作者正在使用 Mockito

  2. 模拟此 answer 中所示的方法通道,(我认为这更麻烦,最适合您自己开发插件)