2016-08-12 8 views
1

Ich versuche, stream Ereignisse in meinem Dienst zu testen, und stellte ein Problem: Ist eine Möglichkeit, synchron Ereignisse im asynchronen Stream zu liefern? Hier ist ein vereinfachter Codebeispiel:Force Stream Ereignisse Lieferung

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

ich meine Antwort aktualisiert. –

Antwort

1

Sie können nichts von async zu synchronisieren machen.

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

Verwandte Themen