当前位置: 首页 > 知识库问答 >
问题:

如何测试从本机调用到颤振的方法通道?

戚甫
2023-03-14

我正在开发一个原生插件,并试图进行单元测试。所有单元测试都将在Dart中完成(无本机代码)。

Flutter有一个测试示例,说明如何使用setMockomeodCallHandler测试从Dart到本机的调用方法通道。

问题是,我还没有找到测试从本机调用Dart的方法通道的方法,该Dart使用<code>setMethodCallHandler</code>来处理本机调用。

下面是一个示例

// main.dart

class Plugin {

  static MethodChannel _channel = const MethodChannel('plugin');
 
  Plugin() {
    _channel.setMethodCallHandler((call) async {
      print("called from native: ${call.method}");
    });
  }

}
// tests/main_test.dart

void main() {
  const MethodChannel _channel = MethodChannel('core.super_router');
  Plugin plugin;

  setUp(() async {
    TestWidgetsFlutterBinding.ensureInitialized();
    plugin = Plugin();
  });

  test("call from native", () async {
    _channel.invokeMethod("something");
    // This call can't reach the handler in the Plugin
    // And there is no method like mockInvokeMethod
  });
}

共有1个答案

潘向明
2023-03-14

下面的片段基于西里尔胡的方法,非常适合我。

test("Listening device", () async {

    ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
    'channnelName',
    StandardMethodCodec().encodeMethodCall(
        MethodCall('methodName', '{"result":true}')),(ByteData data){});

     ...
});
 类似资料:
  • 将颤振集成到主机应用程序(docs)时,有几种方法可以实现,其中一种(最简单的)方法是通过颤振活动类在新活动中打开颤振。这样地: 传统上,对于Flutter侧的Android风格窗口,我们创建带有后退按钮的AppBar。 此AppBar后退按钮和Android系统后退按钮的行为必须相同:按下后退按钮时,前台活动必须关闭(完成)。 目前系统后退按钮确实关闭了,但如何从flutters AppBar后

  • 在android Studio上使用flutter构建我的应用程序,当我上传我的应用程序包(通过制作时,会弹出消息: 我已经尝试了目前在线的所有解决方案来解决这个问题。以下各项的每种组合: 这些解决方案: https://github.com/flutter/flutter/issues/60240#issuecomment-894683946 https://github.com/flutter

  • 目前我正在尝试颤振网页,我需要在颤振主频道工作。但是,后来我需要继续我的其他项目。在他们身上,我正在研究颤振稳定通道。 但是,每当我使用命令“flutter channel stable”或“fluter channel master”切换我的flutter通道时,它每次都会重新下载sdk和其他工具。 目前,我已经下载了稳定的颤振sdk和稳定的dart sdk。 我已将它们移动到“FlutterS

  • 如何删除Flutter中的调试横幅? 我正在使用,我希望屏幕截图上没有横幅。现在确实有了。 注意,emulator不支持配置文件和发布模式的

  • 文件可以从相对于省道脚本文件的目录中读取,简单地称为。 但是,在IDE中运行的颤振测试无法读取该文件。 加载为资源(不是,因为我不想在应用程序中捆绑测试数据文件)在测试中也不起作用。 在flatter中读取文件的好方法是什么(对于命令行测试和IDE测试)? 运行非常快。然而,IntellijIDE内部的测试速度非常慢,但它可以设置调试断点并单步执行和查看变量。所以这两种测试都非常有用。

  • 我在Dart类中有一个方法,它接受< code>BuildContext参数,如下所示: 我想测试该方法是否按预期工作: 当然,它不起作用,因为方法 需要一个参数 类型。此值在整个应用程序本身中都可用,但不确定在我的单元测试中从何处获取该值。