Модифицированная ГОЛОВА должна использовать Void как Тип ответа в Kotlin - PullRequest
0 голосов
/ 11 октября 2018

У меня определен следующий метод API:

@HEAD("test/{name})
fun checkTitle(@Path("name") name: String): Single<Response<Void>>

Затем я хочу выполнить модульное тестирование успешного ответа на этот запрос HEAD, но не могу понять, как создать экземпляр объекта Void в Kotlin.

whenever(mockService.checkTitle(any()))
    .thenReturn(Single.just(Response.success(*VOID NEEDS TO BE HERE*)))

repo.checkTitle("tester")
    .test()
    .assertError(ValueTaken::class.java)

Если я изменю ответ на вызов API для возврата модуля, он вылетает во время выполнения со следующей ошибкой, так как модернизация еще не поддерживает модуль.

Метод HEAD должен использовать Void в качестве ответаtype.

EDIT - добавление классов, которые до сих пор пробовали

Пока я пробовал следующее, но компилятор жалуется, говоря, что он ожидает возвращаемый типиз Single<Response<Void>>!

  • Единица
  • Ничего
  • Любой
  • ноль

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете создать экземпляр Void с помощью (ab) использования отражения:

val voidConstructor = Void::class.java.getDeclaredConstructors()[0]
voidConstructor.setAccessible(true)
val voidInstance = voidConstructor.newInstance()

Что это делает так:

  • получение первого объявленного конструкторадля Void, который является приватным
  • , устанавливая его как public
  • , создавая экземпляр из этого конструктора

Хотя я бы не предложил это в производственном коде,в тестировании это более приемлемо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...