下午好,朋友们!
我有一个DataSource和DataStore(代码如下)。我不知道如何正确地为isWizardComplete()方法编写测试,stateFlow == null。如何初始化stateFlow并正确编写测试?我将感激任何帮助。
class InfoWizardDataSourceImpl(
private val dataStore: DataStore<Preferences>
) : InfoWizardDataSource {
private val stateFlow: Flow<Boolean> = dataStore.data
.map { preferences ->
preferences[IS_WIZARD_COMPLETE] ?: false
}
.......
override suspend fun isWizardComplete(): Boolean {
return stateFlow.first()
}
.......
}
class InfoWizardDataSourceImplTest : BaseCoroutinesTest() {
private val dataStore = mock(DataStore::class.java) as DataStore<Preferences>
private val infoWizardDataSourceImpl = InfoWizardDataSourceImpl(dataStore)
private val IS_WIZARD_COMPLETE = booleanPreferencesKey("isWizardComplete")
@Test
fun isWizardComplete() {
runCoroutineTest {
`when`(dataStore.data.map { it[IS_WIZARD_COMPLETE] }).thenReturn(flowOf(true))
val result = infoWizardDataSourceImpl.isWizardComplete()
assertTrue(result)
}
}
}
1条答案
按热度按时间vmdwslir1#
你需要模拟
dataStore.data
,使用以下代码: