我有一个EmailScreen(有状态的小部件),它有一个文本输入和一个按钮。仅当输入有效的电子邮件时该按钮才会启用。
我正在使用 Bloc,我的屏幕上有InitialEmailState和ValidEmailInputState,并且当我运行该应用程序时它工作正常。
在我的小部件测试中,在 bloc 有机会更新状态之前,第二个期望失败了:
\n\n\n testWidgets(\'when valid email is input, button is enabled\', (tester) async {\n const validEmail = \'email@provider.com\';\n\n emailBloc.listen((event) {\n print(\'NEW EVENT: \' + event.toString());\n });\n\n await bootUpWidget(tester, emailScreen);\n\n final BottomButton button = tester.widget(\n find.widgetWithText(BottomButton, \'CONTINUE\'));\n\n expect(button.enabled, isFalse);\n\n await tester.enterText(find.byType(TextInputScreen), validEmail);\n await tester.pumpAndSettle();\n\n expect(button.enabled, isTrue);\n });\nRun Code Online (Sandbox Code Playgroud)\n\n这是我得到的输出:
\n\nNEW EVENT: InitialEmailState\n\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1 EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK \xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\nThe following TestFailure object was thrown running a test:\n …Run Code Online (Sandbox Code Playgroud)