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));
});