ra9*_*a9r 6 unit-testing dart flutter-test
考虑以下测试代码...
main() {
StreamController controller;
setUp(() {
controller = StreamController.broadcast(sync: false);
});
tearDown(() {
controller.close();
});
test('Stream listen test', () {
var stream = controller.stream;
stream.listen((event) {
// >>>>> How can I test if this was called?? <<<<<<
});
controller.add('Here is an event!');
});
}
Run Code Online (Sandbox Code Playgroud)
...测试stream.listen(...)
回调是否被调用的正确方法是什么?
stream.listen(...)
不返回一个Future
所以传统expectAsyncX
风格的匹配器在这里不起作用。
也许有某种方法可以使用StreamSubscription.asFuture()
返回的stream.listen(...)
?
die*_*per 17
您可以使用expectLater函数来等待您的async
响应,Stream
并Stream
使用emits将您的值与您发出的值进行比较,如下所示:
test('Stream listen test', () {
var stream = controller.stream;
final String value = 'Here is an event!';
stream.listen((event) {
// >>>>> How can I test if this was called?? <<<<<<
});
expectLater(stream, emits(value));
controller.add(value);
});
Run Code Online (Sandbox Code Playgroud)
更新
您可以expectAsync1
在您的listen
方法中尝试,如果没有发出任何值,则会触发超时。
stream.listen(
expectAsync1(
(event) {
expect(event, value);
},
),
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5236 次 |
最近记录: |