2014-05-24 37 views
1

我试图测试通过嘲讽插座飞镖嘲讽的Stream

我的类使用的WebSockets类看起来像

class WebLoggerHandler{ 

    WebLoggerHandler(){ 

    var webSocket = new WebSocket('hostUrl'); 
    webSocket.onOpen.first.then((_) { 
     webSocket.sendString('hello'); 
    }); 
    } 
} 

我嘲讽的WebSocket类如下

class MockWebSocket extends Mock implements WebSocket{   
    Stream<Event> onOpen; 
} 

我测试的身体看起来像

var webSocket = new MockWebSocket(); 

    //fire the onOpen event 
    webSocket.onOpen = new Stream.fromFuture(new Future.value(new Event("onOpen"))); 

    WebLoggerHandler underTest = new WebLoggerHandler(); 

    //test that the hello message was sent when the socket was opened 
    webSocket.getLogs(callsTo("sendString", 'hello')).verify(happenedExactly(1)) 

但它不工作,因为onClose事件发生在检查webSocket日志之后。

如何让代码等待未来发生?

谢谢

回答

1

阅读API文档并已完成。测试需要返回未来

test("it should send 'hello' to the server",() { 

     return new Future.value().then((_) { 

     webSocket.getLogs(callsTo("sendString", {'hello'})).verify(happenedExactly(1)); 

     }); 

    });