繁体   English   中英

Flutter Dart测试带有服务器回调的http

[英]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)在他的一篇中等职位中提供了一个很好的例子。

之后,您可以在单独的测试中使用服务器测试逻辑。 例如,遵循这些原则的东西。

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

该示例取自firebase插件测试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM