带有服务器回调的 http 的 Flutter dart 测试
Flutter dart tests with http with server callbacks
我正在为我的 dart 应用程序开发一些测试,但我在按下按钮时的回调有一些问题。
例如,我有一个带有服务器请求回调的按钮。当我用测试仪点击按钮时,会调用异步暂停。我已经看到一些使用模拟请求的解决方法,但我想对服务器执行实际请求。有什么解决办法吗
预期结果:测试人员点击按钮。该按钮正在调用服务器,然后在请求到达/当前状态刷新后(任何一个都很好)继续测试。
如果这不可能,您对执行此类测试的软件有任何其他建议吗?也许通过詹金斯?
点击按钮代码:
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);
});
您可能应该将这两种逻辑分开。
首先,您创建了 UI 模拟服务器响应的测试,如上所述。这使您可以根据服务器响应测试 ui 流是否正确。
Andrea Bizotto 在 one of his medium posts 中提供了一个很好的例子。
稍后您可以在单独的测试中使用服务器测试逻辑。例如,沿着这些方向的东西。
test('currentUser', () async {
final Firebase user = await auth.currentUser();
expect(user, isNotNull);
expect(user.isAnonymous, isTrue);
expect(user.isEmailVerified, isFalse);
.....
});
我正在为我的 dart 应用程序开发一些测试,但我在按下按钮时的回调有一些问题。
例如,我有一个带有服务器请求回调的按钮。当我用测试仪点击按钮时,会调用异步暂停。我已经看到一些使用模拟请求的解决方法,但我想对服务器执行实际请求。有什么解决办法吗
预期结果:测试人员点击按钮。该按钮正在调用服务器,然后在请求到达/当前状态刷新后(任何一个都很好)继续测试。
如果这不可能,您对执行此类测试的软件有任何其他建议吗?也许通过詹金斯?
点击按钮代码:
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);
});
您可能应该将这两种逻辑分开。
首先,您创建了 UI 模拟服务器响应的测试,如上所述。这使您可以根据服务器响应测试 ui 流是否正确。
Andrea Bizotto 在 one of his medium posts 中提供了一个很好的例子。
稍后您可以在单独的测试中使用服务器测试逻辑。例如,沿着这些方向的东西。
test('currentUser', () async {
final Firebase user = await auth.currentUser();
expect(user, isNotNull);
expect(user.isAnonymous, isTrue);
expect(user.isEmailVerified, isFalse);
.....
});