2

我正在尝试通过模拟套接字来测试使用 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))  

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

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

谢谢

4

1 回答 1

1

阅读 API 文档并解决它。测试需要返回一个未来

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

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

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

      });

   });
于 2014-05-24T12:05:29.337 回答