gpt4 book ai didi

unit-testing - 如何在Dart中测试异步Stream

转载 作者:行者123 更新时间:2023-12-03 04:07:26 25 4
gpt4 key购买 nike

我有这样简单的类(class)

abstract class ServerConnection {
Stream onMessage;
Future send(Message m);
...
}

您调用带有消息的发送,异步响应将流式传输到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的正确而优雅的方法呢?

最佳答案

谢谢Günter,必须在异​​步测试本身之前将异步测试定义为。不过,测试更长的异步通信并不容易。

关于unit-testing - 如何在Dart中测试异步Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21699058/

25 4 0