Использование Mockito, Как мне отобразить класс Kotlin с декларацией поля интерфейса val?

Я пытался проверить класс api клиента retrofit в Kotlin, используя Mockito в Android, который выглядит так:

class SomeApiClient : SomeApi { private val service: SomeApiService constructor(service: SomeApiService) { this.service = service } } 

он реализует интерфейс SomeApi и содержит один интерфейс для SomeApi качестве параметра конструктора.

При spy классах с Mockito классы должны иметь конструкторы no-arg, иначе ваши тесты не MockitoException с MockitoException :

org.mockito.exceptions.base.MockitoException: невозможно инициализировать аннотированное поле @Spy «SomeClass». Убедитесь, что тип «SomeClass» имеет конструктор no-arg.

Если классы имеют конструкторы со всеми параметрами, содержащими значения по умолчанию, то Kotlin генерирует для него безпараметрические конструкторы. Однако, что, если класс получает interface качестве параметра конструктора (и имеет соответствующее поле с объявлением val ), то как мы можем применить к нему значение по умолчанию или объявить пустой конструктор?

Благодаря!

При шпионаже классов с Mockito классы должны иметь конструкторы no-arg

Нет, это только если вы не предоставите экземпляр самостоятельно. Поэтому укажите экземпляр, например

 @Spy val client = SomeApiClient(Mockito.mock(SomeApiService::class.java))