升级firebase_core_platform_interface后如何获取Firebase方法通道以Mock?
Firebase Mock 方法通道获取问题(升级至firebase_core_platform_interface v4.5.2后)
问题概述
- 升级
firebase_core_platform_interface至v4.5.2后,无法找到获取Firebase方法通道的方式,无法完成测试中的Firebase Mock配置 - 需要明确如何获取对应通道,填入以下代码的
XXX参数:TestDefaultBinaryMessengerBinding.instance!.defaultBinaryMessenger.setMockMethodCallHandler(XXX, (call) {...}); - 旧版本(v4.4.0)可通过
MethodChannelFirebase.channel.setMockMethodCallHandler((call) {...})实现Mock,但新版本已无此公开成员
当前依赖配置
firebase_core: ^2.4.1 firebase_core_platform_interface: 4.5.2
解决方案
在v4.5.2版本中,MethodChannelFirebase的channel成员不再对外公开,你可以直接通过构造指定名称的MethodChannel实例来获取对应的通道,通道名称与旧版本保持一致:
替换代码中的XXX为:
const MethodChannel('plugins.flutter.io/firebase_core')
完整Mock示例代码
TestDefaultBinaryMessengerBinding.instance!.defaultBinaryMessenger.setMockMethodCallHandler( const MethodChannel('plugins.flutter.io/firebase_core'), (call) async { // 根据调用的方法编写Mock逻辑 if (call.method == 'Firebase#initializeCore') { // 返回模拟的初始化结果 return [ { 'name': '[DEFAULT]', 'options': { 'apiKey': 'mock_api_key', 'appId': 'mock_app_id', 'projectId': 'mock_project_id', 'messagingSenderId': 'mock_sender_id', }, 'isDefault': true, } ]; } // 其他方法的Mock处理 return null; }, );
内容的提问来源于stack exchange,提问作者user3181240
相关产品推荐
相关产品推荐

