Тесты Flutter Dart с http с обратными вызовами сервера - PullRequest
0 голосов
/ 23 сентября 2018

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

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

Ожидаемый результат: тестер нажимает на кнопку.Кнопка выполняет вызов на сервер, а затем тестирование продолжается после поступления запроса / после обновления текущего состояния (любое из них было бы замечательно).

Если это невозможно, у вас есть какие-либодругие предложения для программного обеспечения для выполнения такого рода тестов?Может быть, через Дженкинс?

Код для нажатия кнопки:

 testWidgets("Open Login Test", (WidgetTester tester) async{
 await tester.pumpWidget(
    new MaterialApp(
      home: new Material(
        child: new LoginScreen(),
      ),
    ));

expect(find.text("Next"), findsOneWidget);
expect(find.text("Login"), findsNothing);

Finder emailField = find.byKey(new Key('email'));
await tester.enterText(emailField, "vlad_duncea_31@yahoo.com");

var submitButton = find.byKey(new Key('login'));
expect(submitButton, findsOneWidget);

await tester.tap(submitButton);
expect(find.text("Next"), findsNothing);
expect(find.text("Login"), findsOneWidget);

});

1 Ответ

0 голосов
/ 24 сентября 2018

Вероятно, вам следует разделить обе логики.

Во-первых, вы создаете тест для пользовательского интерфейса, который проверяет ответ от сервера, как вы сказали выше.Это позволяет вам проверить правильность пользовательского интерфейса в зависимости от ответа сервера.

Андреа Бизотто приводит хороший пример одного из своих средних сообщений .

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

test('currentUser', () async {
  final Firebase user = await auth.currentUser();
  expect(user, isNotNull);
  expect(user.isAnonymous, isTrue);
  expect(user.isEmailVerified, isFalse);
  .....
});

Пример взят из испытаний плагина firebase .

...