Как проверить флаттер url_launcher, который открывает почтовое приложение? - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть Snackbar с SnackbarAction, который должен открыть почтовое приложение по умолчанию с темой и телом по умолчанию.Мне интересно, есть ли какая-то возможность проверить, действительно ли это происходит с некоторыми модульными тестами.

Мой код 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?

  });
});

1 Ответ

0 голосов
/ 23 апреля 2019

Краткий ответ: Вы не можете.

Запуск с mailto выполняется ОС устройства и находится вне контекста приложения флаттера.Поскольку тестовый пакет флаттера фокусируется на приложении флаттера, то, что происходит в ОС, недоступно.

...