シンプルな非同期処理のテストを書く 18 interface NetworkDataSource { suspend fun getTopics(): List } class TopicRepository(val networkDataSource: NetworkDataSource) { suspend fun getTopics(): List { val response: List = networkDataSource.getTopics() return response.map { it.asModel() } } }
シンプルな非同期処理のテストを書く 19 interface NetworkDataSource { suspend fun getTopics(): List } class TopicRepository(val networkDataSource: NetworkDataSource) { suspend fun getTopics(): List { val response: List = networkDataSource.getTopics() return response.map { it.asModel() } } } APIレスポンスをアプリ内で使いやすいデー タに変換するsuspend関数
delayを入れたテストを書く 75 class SpyNetworkDataSource : NetworkDataSource { var downloadCallCount: Int = 0 override suspend fun download(url: String): Unit { delay(1000) downloadCallCount++ } } 1秒間遅延した状態をエミュレートするため、テスト 用のDataSourceでdelayを入れる
Dispatcherの差し替え 214 @HiltAndroidTest @UninstallModules(DispatchersModule::class) class Test { val testDispatcher = UnconfinedTestDispatcher() @BindValue @IODispatcher val ioDispatcher: CoroutineDispatcher = testDispatcher .. }