【问题标题】:How to test flutter url_launcher that email app opens?如何测试电子邮件应用程序打开的颤振 u​​rl_launcher?
【发布时间】:2019-07-19 00:44:58
【问题描述】:

我确实有一个带有 SnackbarAction 的 Snackbar,它应该打开带有默认主题和正文的默认电子邮件应用程序。我想知道是否有可能通过某些单元测试来验证这是否真的发生。

我的 Snackbar 代码如下所示:

SnackBar get snackbar =>
      SnackBar(
          content: Text(message),
          action: SnackBarAction(
              key: const Key('ErrorSnackbarAction'),
              label: AppLocalizations
                  .of(_context)
                  .report,
              onPressed: () async => await launch('mailto:test@test.com?subject=TestSubject&body=TestBody')));

我已经在验证外观是否正常:

group('ErrorSnackbar', () {
  testWidgets('appearance test', (WidgetTester tester) async {
    await tester.pumpWidget(_generateSnackbarApp());

    await _showSnackbar(tester);

    expect(find.text(userMessage), findsOneWidget);
    expect(find.byWidgetPredicate((Widget widget) =>
    widget is SnackBarAction && widget.label == 'Report'), findsOneWidget);
  });

  testWidgets('error report test', (WidgetTester tester) async {
    await tester.pumpWidget(_generateSnackbarApp());

    await _showSnackbar(tester);

    tester.tap(find.byKey(errorSnackbarAction));
    await tester.pump();

   // how to verify that the default email app was opened
  // with expected subject and body?

  });
});

【问题讨论】:

    标签: flutter flutter-test


    【解决方案1】:

    简短回答:你不能。

    mailto 的启动由设备的操作系统处理,并且不属于 Flutter 应用程序的上下文。 由于 Flutter 测试包专注于 Flutter 应用,所以在 OS 上发生的事情是遥不可及的。

    【讨论】:

      猜你喜欢
      • 2020-07-04
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      • 2019-12-31
      • 2021-10-30
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多