【发布时间】:2019-10-07 02:22:04
【问题描述】:
我有一个看起来像这样的类
class Foo {
private val scope = Job() + Dispatchers.IO
val emissions = PublishSubject.create<Bar>()
fun doSomething() {
scope.launch {
// Do a whole bunch of work...
withContext(Dispatchers.Main) emissions.onNext(bar)
}
}
}
我正在尝试想出一种方法来对其进行单元测试。我已经尝试使范围可注入并编写类似
@Test fun testFoo() = runBlockingTest {
Dispatchers.setMain(TestCoroutineDispatcher())
val foo = Foo(this)
foo.doSomething()
foo.emissions.assertStuff()
}
但这似乎不起作用。断言发生在doSomething() 内部的协程完成之前。
我也尝试过使这个调度程序可注入,提供Dispatchers.Unconfined,但这也无济于事。这种方法有问题吗?
【问题讨论】:
-
必须是
PublishSubject吗? -
需要是
Subject、Relay、`频道`或类似的东西