Created
August 19, 2018 13:06
-
-
Save juwencheng/ae1f8e2f58ec9c92d2bf0a5d333e27d7 to your computer and use it in GitHub Desktop.
This is a simple example to test a StreamBuilder widget, which data are from http request.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This is a basic Flutter widget test. | |
// To perform an interaction with a widget in your test, use the WidgetTester utility that Flutter | |
// provides. For example, you can send tap and scroll gestures. You can also use WidgetTester to | |
// find child widgets in the widget tree, read text, and verify that the values of widget properties | |
// are correct. | |
import 'dart:async'; | |
import 'package:flutter/material.dart'; | |
import 'package:flutter_test/flutter_test.dart'; | |
import 'package:rxdart/rxdart.dart'; | |
import 'package:http/http.dart' as http; | |
void main() { | |
Widget snapshotText(BuildContext context, AsyncSnapshot<String> snapshot) { | |
print(snapshot.toString()); | |
return new Text(snapshot.toString(), textDirection: TextDirection.ltr); | |
} | |
Future<Null> eventFiring(WidgetTester tester) async { | |
await tester.pump(Duration.zero); | |
} | |
// create a data stream | |
final _dataStreamSubject = BehaviorSubject<String>(); | |
Stream<String>_dataStream = _dataStreamSubject.stream; | |
void refresh() async { | |
http.Response response = await http.get( | |
"https://jsonplaceholder.typicode.com/todos/1" | |
); | |
if (response.statusCode == 200) { | |
_dataStreamSubject.add("success"); | |
}else { | |
_dataStreamSubject.add("failed"); | |
} | |
} | |
testWidgets("StreamBuilder from HTTP Request", (WidgetTester tester) async { | |
await tester.pumpWidget(new StreamBuilder<String>( | |
stream:_dataStream, | |
builder: snapshotText | |
)); | |
await refresh(); | |
eventFiring(tester); | |
expect(find.text("AsyncSnapshot<String>(ConnectionState.active, true, null)"), findsOneWidget); | |
}); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
在 testWidgets 方法里面无法添加异步请求方法