Я бы хотел провести несколько юнит-тестов и подделать подделку httpresponse
.Я создал httprequest
Но когда я делаю "whenever(repository.search(any())).thenReturn(response)"
, у меня появляется "NullPointerException
на "search()"
Когда я запускаю приложение на устройстве / эмуляторехорошо работает
@Test
fun searchUser_success() {
val expectedUser = User("Louis", 1, "", "", "", "", "", "", "", "", 0.0)
val result = Result(1, false, listOf(expectedUser))
val response = RTResponse.Success(result)
whenever(runBlocking { repository.search("Louis") }).thenReturn(response)
Assert.assertEquals(expectedUser, viewModel.users.value)
}
class SearchRepository(private val searchInterface: SearchInterface) {
suspend fun search(user: String): RTResponse<Result> {
val response = searchInterface.searchAsync(query = user, page = 1, perPage = 10).await()
return try {
if (response.isSuccessful) RTResponse.Success(response.body()!!) else RTResponse.Error(IOException(""))
} catch (e: java.lang.Exception) {
RTResponse.Error(IOException("Unable to fetch users"))
}
}
}
interface SearchInterface {
//http request
@GET("search/users")
fun searchAsync(@Query("q") query: String,
@Query("page") page: Int,
@Query("per_page") perPage: Int): Deferred<Response<Result>>
//singleton instance of Retrofit
companion object Factory { /* build retrofit instance */ }
}