java转测_将Java Mockito测试转换为Kotlin

将以下有效的Java测试转换为Kotlin时遇到问题

@Test

public void testSomething() {

Mockito.when(parkIdMappingRepository.save(Mockito.any(ParkIdMapping.class))).thenAnswer(

(Answer) invocation -> {

ParkIdMapping mapping = invocation.getArgument(0);

mapping.setId(100L);

return mapping;

}

);

ParkIdMapping mapping = parkIdMappingRepository.save(new ParkIdMapping("123"));

assertEquals(new Long(100L), mapping.getId());

Intellij Idea完成的到Kotlin的转换导致:

@Test

public fun test_correctParkIdMappingGeneration() {

Mockito.`when`(parkIdMappingRepository.save(Mockito.any(ParkIdMapping::class.java))).thenAnswer(

{ invocation -> // compiler error

val mapping = invocation.getArgument(0)

mapping.id = 100L

mapping

} as Answer

)

val mapping = parkIdMappingRepository.save(ParkIdMapping("123"))

assertEquals(100L, mapping.id)

}

但是,带有lambda参数’invocation’的行会导致编译器错误:

Cannot infer a type for this parameter. Please specify it explicitly .

我试图像这样调整lambda

Mockito.`when`(parkIdMappingRepository.save(Mockito.any(ParkIdMapping::class.java))).thenAnswer(

{ invocation: InvocationOnMock ->

val mapping = invocation.getArgument(0) as ParkIdMapping

mapping.id = 100L

mapping

} as Answer

)

导致

java.lang.ClassCastException: com.foobar.ParkIdGenerationServiceTest$test_correctParkIdMappingGeneration$1 cannot be cast to org.mockito.stubbing.Answer

org.mockito.exceptions.misusing.UnfinishedStubbingException:

Unfinished stubbing detected here:

-> at com.foobar.ParkIdGenerationServiceTest.testSomething(ParkIdGenerationServiceTest.kt:92)

最初的目的是修改传递到存储库的save方法的实体并返回它.有什么想法怎么办?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值