2016-08-12 56 views
1

我想在我的服务中测试流事件,并面临一个问题:是否有任何方式在异步流中同步传递事件?这里是简化的代码示例:强制流事件传递

test("deliver event",() { 
    StreamController sc = new StreamController(); 
    String v = "old"; 
    sc.stream.listen((val) {v = val;}); 
    sc.add("new"); 
    expect(v, "new"); // test fails: actual value is "old" 
}); 
+0

我更新了我的答案。 –

回答

1

无法从异步到同步进行任何操作。

import 'dart:async'; 
Future main() async { 
    StreamController sc = new StreamController(); 
    String v = "old"; 
    var subscr = sc.stream.listen((val) { v = val;}); 
    sc.add("new"); 
    subscr.asFuture().then((_) { 
    print('assert v == "new": ${v == 'new'}'); 
    // expect(v, "new"); // test fails: actual value is "old" 
    }); 
    sc.close(); 
} 

DartPad example