给定以下类(用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进行测试?