Before using error management the test was working fine but once wrapping the response as bellow I start getting
no answer found for: PostPreviewRepository(#1).getPosts-qim9Vi0(0, continuation {})
Target method to test :
override suspend fun getPosts(page: UInt): Result<List<PostPreviewModel>> {
return try {
val posts = postService.getPosts(page)
Success(postPreviewMapper.fromListDto(posts.body()!!.data))
} catch (e : Exception) {
Failure(HttpError(e))
}
}
Mapper
class PostPreviewMapper @Inject constructor(
private val ownerPreviewMapper: OwnerPreviewMapper,
) {
fun fromListDto(postPreviews: List<PostPreviewDTO>): List<PostPreviewModel> =
postPreviews.map { fromDto(it) }
fun fromDto(postPreview: PostPreviewDTO) = PostPreviewModel(
id = postPreview.id,
text = postPreview.text,
imageUrl = postPreview.image,
publishDate = postPreview.publishDate,
owner = ownerPreviewMapper.fromDto(postPreview.owner)
)
}
Unit test
@Test
fun `Given repository returns empty list, When GetPostPreviewsUseCase is invoked, Then returns empty list`() =
runTest {
// Given
coEvery { postPreviewRepository.getPosts(23u) } returns Success(emptyList())
// When
val postsList = getPostPreviewsUseCase.invoke()
// Then
postsList.onSuccess { postsModels ->
assertTrue(postsModels.isEmpty())
}
}
This work for me :
@Test
fun `Given repository returns empty list, When GetPostUseCase is invoked, Then returns empty list`() =
runTest {
// Given
coEvery { postRepository.getPosts(0) } returns ResultOf.Success(emptyList())
// When
val postsList = getPostUseCase.invoke(0) as ResultOf.Success
// Then
assertTrue(postsList.value.isEmpty())
}