ソケットをモックして 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 イベントが発生するため、機能しません。
Future が発生するまでコードを待機させるにはどうすればよいですか?
ありがとう