Unit testing 如何等待流事件在单元测试中得到处理?
单元测试意味着在通过Unit testing 如何等待流事件在单元测试中得到处理?,unit-testing,dart,stream,Unit Testing,Dart,Stream,单元测试意味着在通过add方法将某个项传递给Sink对象之后,将执行一些操作来响应它 class Subject { final StreamController<Item> _itemStreamController = StreamController(); Sink<Item> get itemsSink => _itemStreamController.sink; Stream<Item> get _itemsStream =>
add
方法将某个项传递给Sink
对象之后,将执行一些操作来响应它
class Subject {
final StreamController<Item> _itemStreamController = StreamController();
Sink<Item> get itemsSink => _itemStreamController.sink;
Stream<Item> get _itemsStream => _itemStreamController.sink;
final SomeService _service;
Subject(this._service) {
_itemsStream.listen((item) => _service.processItem(item));
}
}
正如您所理解的,事件循环线程首先处理verify
指令,然后才将事件分派给侦听器
如果我只是插入wait Future.value(null)在接收器交互和方法调用验证之间的代码>比所有的工作方式都更有效。尽管如此,这个解决方案还是相当丑陋的
单元测试框架本身是否提供了在事件循环结束时安排验证的内容?或者不借助wait Future.value(null)之类的方法来通过单元测试的任何措施代码>?有关示例,请参阅。有关示例,请参阅。
test('description', () async {
final Item givenItem = Item("givenValue");
final SomeService givenService = MockSomeService();
final Subject subject = Subject(givenService);
subject.itemsSink.add(givenItem);
verify(givenService.add(givenItem));
});