#flutter #flutter-test
Вопрос:
У меня есть простое приложение flutter, доступное на github, имеющее как светлые, так и темные темы с кнопкой «Переключатель тем». На главной странице у меня есть виджет Scaffold, который использует свойство цвета фона из темы. Есть ли способ проверить цвет фона каркаса до и после переключения тем во время интеграционного теста с driver
помощью ?
Попытался проверить активную тему до и после переключения тем, но не смог:
group('Theme Test', () {
final themeButton = find.byValueKey('Button');
final themeProvider = ThemeProvider();
test('Switch between light and dark themes', () async {
expect(themeProvider.mode, ThemeMode.light); //check initial theme
await driver.tap(themeButton);
expect(themeProvider.mode, ThemeMode.dark); //check new theme
});
});
Полный интеграционный тест здесь
Моя цель-получить цвет фона эшафота до и после переключения тем с driver
Ответ №1:
Вы создаете новый экземпляр ThemeProvider() в своей тестовой группе. Драйвер создает ваше приложение, но не будет использовать ThemeProvider (), созданный вами в тесте.
Нелегко взаимодействовать с вашим запущенным приложением в драйвере Flutter (вам придется использовать данные запроса драйвера, но я не рекомендую этого делать для этой проблемы).
Возможно, вам захочется ознакомиться с новыми интеграционными тестами для Flutter с помощью пакета integration_test. Новые интеграционные тесты представляют собой комбинацию тестов widgetTests и тестов драйверов flutter. Более подробная информация здесь; https://flutter.dev/docs/testing/integration-tests
Новый пакет интеграционных тестов позволит взаимодействовать с экземпляром ThemeProvider (), созданным вашим приложением, если вы сделаете его доступным. Затем можно будет прочитать значение ThemeProvider.mode / проверить, изменился ли фактический цвет фона.
Комментарии:
1. Большое вам спасибо! 🙏