我有像这样的简单课程
abstract class ServerConnection {
Stream onMessage;
Future send(Message m);
...
}
您使用消息调用send,异步响应将流式传输到onMessage。现在我需要通过此连接发送各种消息和测试响应。我做了这个测试,但它没有工作(我迷失了这些expectAsynces)和_waitForNextEvent不是很好(但至少工作!)
test('connection', () {
getCon().then((ServerConnection c) {
Future<Message> _waitForNextEvent(Stream s) {
StreamSubscription ss;
Completer c = new Completer();
ss = s.listen((Message m) {
ss.cancel();
c.complete(m);
});
return c.future;
}
_waitForNextEvent(c.onMessage).then(expectAsync1(
(m) => expect(m, new isInstanceOf<OkMessage>('OkMessage'))
));
c.send(new StatusMessage());
_waitForNextEvent(c.onMessage).then(expectAsync1(
(m) => expect(m, new isInstanceOf<PongMessage>('PongMessage'))
));
c.send(new PingMessage());
});
});
那么测试Dart Streams的正确和优雅的方法是什么?
答案 0 :(得分:0)
谢谢Günter,异步测试必须在之前定义异步测试本身。但是,测试更长的异步通信并不容易。