想象一下,我们有一个sut
作为发布者,它连续发布值,永远不会结束。在更改某些输入时(例如:我们更改了sut
所依赖的一些模拟的@Published属性(,它会发出一个事件。
我们在results
数组中收集这些事件,然后检查是否存在确切的预期事件数,而不是更少或更多。
问题是,如何检查在我们预期的发射之后是否没有更多的事件?如果没有wait
方法,我们不知道什么时候该检查results
数组。
wait
会起作用,但对我来说,它就像是联合收割机的拐杖。因为好的单元测试应该很快(参见F.I.R.S.T单元测试原理(。这些wait
看起来更像反模式。
我也找不到苹果对此的推荐。
您需要一个测试调度器,它基本上是一个虚拟时间调度器,可以让您控制何时发布基于时间的事件。例如,您可以同时启动所有事件。Combine没有内置的测试调度程序,但您可以使用名为Entwine 的开源测试调度程序