Проверка интеграции 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 должна поддерживать такие очень распространенные ситуации, поэтому вы можете делать это в пределах строк кода.
Если вы не хотите, чтобы конечные пользователи входили в систему по паролю, вы можете просто отключить этот метод в производственной сборке и включить его только в отладочной сборке.
Другой способ - имитировать вашу систему аутентификации. Другими словами, при тестировании у вас есть кнопка под названием «поддельный вход», и ваш драйвер тестирования интеграции просто нажимает эту кнопку.