- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 flutter 应用 available on 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
切换主题之前和之后获取 Scaffold 的背景颜色
最佳答案
您正在测试组中创建 ThemeProvider() 的新实例。驱动程序正在创建您的应用程序,但不会使用您在测试中创建的 ThemeProvider()。
在 Flutter Driver 中与您正在运行的应用程序通信并不容易(您必须使用驱动程序 request_data,但我不建议针对此问题这样做)。
您可能想使用 integration_test 包查看 Flutter 的新集成测试。新的集成测试是 widgetTests 和 flutter 驱动程序测试的组合。更多信息在这里; https://flutter.dev/docs/testing/integration-tests
新的集成测试包将可以与您的应用程序创建的 ThemeProvider() 实例进行通信(如果您允许它访问的话)。然后可以读取 themeProvider.mode 值/检查实际背景颜色是否更改。
关于 flutter 测试 : How to check the background color of a widget during integration test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68477166/
我是一名优秀的程序员,十分优秀!