kotlin: как перегрузить импортированную функцию
Я использую assertj. среди прочего у него есть функции assertThat(int)
а также assertThat(Object)
, я хотел бы добавить свою собственную функцию
fun <T> assertThat(flux: Flux<T>) = assertThat(flux.toStream())
но тогда кажется, что я не могу легко использовать это. когда я объявляю функцию вне класса тестирования MyTest
вызов функции в тестах привязывается к assertThat(Object)
вместо assertThat(Flux)
:
import org.assertj.core.api.Assertions.assertThat
//<----------- if declared here, doesn't work
class MyTest {
//<----------- if declared here, all is ok
@Test fun test() {
assertThat(Flux.just(1)).containsExactly(1)
}
}
что я должен сделать, чтобы иметь возможность использовать мою функцию?
1 ответ
Решение
Вы можете определить его в дополнительном файле и явно импортировать его. Я думаю, что это даже помогает добавить импорт, когда он определен в вашем файле, но IDE показывает этот импорт как неиспользуемый.
Предложение будет: определить расширение в your/package/testutils.kt
и импортировать его потом:
import your.package.assertThat