У меня есть Result<SuccessData, ErrorType>
запечатанный класс, который я использую для представления ответа от API.Во фрагментах я использую это для разбора ответа:
activity?.onResult(response?.result, onSuccess = {
// Act on successful response
}, onValidationError = {
// Act on errored response
})
Теперь, в моих тестах, я хотел бы проверить ответ и выполнить утверждения, если это успешный ответ или ответ об ошибке (и чтотип ответа).
Если у меня есть возвращаемая переменная типа response: Result<SuccessData, ErrorType> = someResponse
, могу ли я сделать что-то вроде
// Test Successful Response
Assert.assertTrue(response.result.value is SuccessData)
// Test Failed Response
Assert.assertTrue(response.result.value is ErrorType)
РЕДАКТИРОВАТЬ: Добавить класс результата
sealed class Result<out Success, out ErrorType> {
companion object {
fun <T> success(value: T): Ok<T> = Ok(value)
fun <E> error(errors: List<E>): Error<E> = Error(errors)
}
// success response data
data class Ok<out T> internal constructor(val data: T) : Result<T, Nothing>()
// expected validation errors
data class Error<out E> internal constructor(val errors: List<E>) : Result<Nothing, E>()
sealed class GenericError {
class Unknown : GenericError()
class ServerDown : GenericError()
}
}