Проверка интеграции Flutter firebase auth (ссылка на электронную почту или вход в google)

Я добавляю в свое приложение интеграционное тестирование (используя пакет integration_test), но у меня возникла проблема.

Позволь мне объяснить. Первым шагом при запуске моего приложения является аутентификация, для которой у меня есть 3 варианта: ссылка на электронную почту firebase, вход в firebase в Google и вход в firebase в Facebook.

Что меня блокирует, так это то, что все эти методы входа требуют действий за пределами основного кода дротика приложения и, следовательно, недоступны для драйвера флаттера.

Я что-то упустил? А если нет, то как поступить с этим делом?

Ваше здоровье!

3 ответа

Чтобы сделать тест менее нестабильным, я бы порекомендовал не полагаться на подключение к Интернету или сторонних лиц (например, Firebase или вход в систему Google).

Я бы посоветовал использовать для этого Mock. Поэтому, когда вы пытаетесь войти в свой тест, вы отправляете фальшивый ответ, и таким образом вы можете продолжать использовать приложение.

В следующей статье объясняется, как использовать макет:https://medium.com/stuart-engineering/mocking-integration-tests-with-flutter-af3b6ba846c7

Вы можете использовать Patrol — он позволяет вам взаимодействовать с собственным пользовательским интерфейсом системы из ваших интеграционных тестов Flutter. Пример:

      import 'package:flutter_test/flutter_test.dart';
import 'package:patrol/patrol.dart';

void main() {
  patrolTest(
  'signs in', 
  nativeAutomation: true,
  (PatrolTester $) async {
    await $.native.enterText(
      Selector(textContains: 'Email'),
      text: 'tester@awesomeapp.pl'),
    );
    await $.native.enterText(
      Selector(textContains: 'Password'),
      text: 'ny4ncat'),
    );
    await $.native.tap(Selector(text: 'Continue'));

     // you should be signed in
  });
}

Вы можете добавить четвертый способ входа - с помощью логина и пароля. Firebase должна поддерживать такие очень распространенные ситуации, поэтому вы можете делать это в пределах строк кода.

Если вы не хотите, чтобы конечные пользователи входили в систему по паролю, вы можете просто отключить этот метод в производственной сборке и включить его только в отладочной сборке.

Другой способ - имитировать вашу систему аутентификации. Другими словами, при тестировании у вас есть кнопка под названием «поддельный вход», и ваш драйвер тестирования интеграции просто нажимает эту кнопку.

Другие вопросы по тегам