我在將以下工作Java測試轉換為Kotlin@Testpublic void testSomething() { Mockito.when(parkIdMappingRepository.save(Mockito.any(ParkIdMapping.class))).thenAnswer( (Answer<ParkIdMapping>) 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 的轉換結果是:@Testpublic 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<ParkIdMapping> ) val mapping = parkIdMappingRepository.save(ParkIdMapping("123")) assertEquals(100L, mapping.id)}但是,帶有 lambda 參數“調用”的行會導致編譯器錯誤:無法推斷此參數的類型。請明確說明。我試過像這樣調整 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<ParkIdMapping> )導致java.lang.ClassCastException: com.foobar.ParkIdGenerationServiceTest$test_correctParkIdMappingGeneration$1 不能轉換為 org.mockito.stubbing.Answerorg.mockito.exceptions.misusing.UnfinishedStubingException:在此處檢測到未完成的存根:-> 在 com.foobar.ParkIdGenerationServiceTest.testSomething(ParkIdGenerationServiceTest.kt:92)原意是修改傳遞給 的save方法的實體repository并返回。任何想法該怎么做?
添加回答
舉報
0/150
提交
取消