如何在flutter小部件测试中发出http请求?

时间:2018-01-11 15:38:39

标签: dart flutter flutter-test

我试图在一个颤动小部件测试中发出一个HTTP请求,但由于某种原因,小部件测试总是在5秒后超时,而它在单元测试中完全正常。

import 'package:flutter_test/flutter_test.dart';
import 'dart:io';
import 'dart:convert';

void main() {
  test('http unit-test works', () async {
    var httpClient = new HttpClient();
    var request = await httpClient.getUrl(Uri.parse('https://api.ipify.org/'));
    var response = await request.close();
    var responseBody = await response.transform(UTF8.decoder).join();
    print('BODY: $responseBody');
  });

  testWidgets('http widget-test does not work', (WidgetTester tester) async {
    var httpClient = new HttpClient();
    var request = await httpClient.getUrl(Uri.parse('https://api.ipify.org/'));
    var response = await request.close();
    var responseBody = await response.transform(UTF8.decoder).join();
    print('BODY: $responseBody');
  });
}

flutter测试环境是否在这里吃掉我的HTTP请求?我怎样才能阻止它这样做呢?

1 个答案:

答案 0 :(得分:0)

如果问题的原因是您提到的超时,我建议在测试期间尝试不同的网络。 WidgetTester 不应导致 Flutter 单元测试中的 HTTP 请求出现问题。我尝试了提供的 repro,但它在我的测试中运行良好。

demo

作为参考,这是我正在运行的 Flutter 版本:Flutter version 1.26.0-2.0.pre.281