【问题标题】:Dart Mocking a StreamDart 模拟流
【发布时间】:2014-07-13 17:23:19
【问题描述】:

我正在尝试通过模拟套接字来测试使用 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 日志之后发生的。

如何让代码等待 Future 发生?

谢谢

【问题讨论】:

    标签: dart dart-html dart-async


    【解决方案1】:

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

       test("it should send 'hello' to the server", () {
    
          return new Future.value().then((_) {
    
            webSocket.getLogs(callsTo("sendString", {'hello'})).verify(happenedExactly(1));
    
          });
    
       });
    

    【讨论】:

      猜你喜欢
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2012-05-17
      • 2010-12-19
      相关资源
      最近更新 更多