gpt4 book ai didi

android - 如何测试 viewModelScope 控制的 SharedFlow?

转载 作者:行者123 更新时间:2023-12-05 00:07:47 25 4
gpt4 key购买 nike

我有一个 SharedFlow .当ViewModel已创建,我将值更改为 Val1 .之后,我使用 viewModelScope3 seconds 进行一些虚假的延迟然后将值更改为 Val2 .

class MyViewModel : ViewModel() {

val x = MutableSharedFlow<String>()

init {
x.tryEmit("Val1")
viewModelScope.launch {
delay(3000)
x.tryEmit("Val2")
}
}
}
问题
  • 如何测试初始值为Val1 ?
  • 如何测试该值是否已更改为 Val2延迟后?
  • 最佳答案

    我找到了解决方案:
    就像将 Main 调度程序设置为 TestCoroutineDispatcher 一样简单.

    @ExperimentalCoroutinesApi
    class CoroutineMainExtension : BeforeEachCallback, AfterEachCallback {
    val dispatcher = TestCoroutineDispatcher()
    override fun beforeEach(context: ExtensionContext?) {
    Dispatchers.setMain(dispatcher)
    }

    override fun afterEach(context: ExtensionContext?) {
    Dispatchers.resetMain()
    dispatcher.cleanupTestCoroutines()
    }
    }
    并像这样使用它: @ExtendWith(CoroutineMainExtension::class)

    关于android - 如何测试 viewModelScope 控制的 SharedFlow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69425075/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com