亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Java Mockito 測試轉換為 Kotlin

將 Java Mockito 測試轉換為 Kotlin

LEATH 2021-09-29 16:27:30
我在將以下工作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并返回。任何想法該怎么做?
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號