我正在开发一个 Android 应用程序,我选择使用 Kotlin Result 类来处理我的操作的成功/失败。我对代码进行了更改,但测试停止工作,我不明白为什么。下面我给大家展示一些片段:
FireStoreClient.kt
suspend fun items(): Result<ItemsResponse>
Run Code Online (Sandbox Code Playgroud)
网络数据源.kt
suspend fun getItems(): List<Item> =
fireStoreClient.items().fold({ it.items.map { item -> item.toDomain() } }, { emptyList() })
Run Code Online (Sandbox Code Playgroud)
网络数据源测试.kt
@ExperimentalCoroutinesApi
@Test
fun `Check getItems works properly`() = runBlockingTest {
whenever(fireStoreClient.items()).doReturn(success(MOCK_ITEMS_DOCUMENT))
val expectedResult = listOf(
Item(
id = 1,
desc = "Description 1"
),
Item(
id = 2,
desc = "Description 2"
)
)
assertEquals(expectedResult, dataSource.getItems())
}
Run Code Online (Sandbox Code Playgroud)
这是我现在遇到的例外。有什么线索吗?单元测试时似乎未执行 Fold() 方法。
java.lang.ClassCastException: kotlin.Result cannot be cast to ItemsResponse
at NetworkDataSource.getItems(NetworkDataSource.kt:31)
Run Code Online (Sandbox Code Playgroud)