Учитывая следующий класс (написанный на kotlin):
class Target {
fun <R> target(filter: String, mapper: (String) -> R): R = mapper(filter)
}
Я могу проверить в java, код теста:
@Test
public void testInJava() {
Target mockTarget = Mockito.mock(Target.class);
Mockito.when(mockTarget.target(
argThat(it -> true),
Mockito.argThat(it -> true)
)).thenReturn(100);
assert mockTarget.target("Hello World", it -> 1) == 100;
}
Пройденный Java-тест, как и ожидалось, но тот же тест написан на kotlin:
@Test
fun test() {
val mockTarget = Mockito.mock(Target::class.java)
Mockito.`when`(mockTarget.target(
Mockito.argThat<String> { true },
mapper = Mockito.argThat<Function1<String, Int>>({ true }))
).thenReturn(100)
assert(mockTarget.target("Hello World") { 1 } == 100)
}
Версия kotlin Я получаю следующее исключение:
java.lang.IllegalStateException: Mockito.argThat<String> { true } must not be null
Почему это происходит и как я могу проверить это с помощью kotlin?