io.mockk.MockKException:未找到以下答案:BudgetsInner(#46).delete(Team)

时间:2020-03-11 12:59:02

标签: kotlin junit mockito

下面是实际代码

     override fun deleteBudget(serverWebExchange: ServerWebExchange): Mono<Boolean> {
           logger.info("inside delete")
             return serverWebExchange.formData.map { formData ->
                 val environment =
  objectMapper.readValue(formData.keys.iterator().next(), object : 
 TypeReference<String>() {})

                 val budgetName = getEnvironmentBudgetName(environment)
                 logger.info("Deleting Azure Budget $budgetName from account")
                 val retrofit = azureClientImpl.retrofit()
                 val budgetsInner = BudgetsInner(retrofit, azureClientImpl)
                 budgetsInner.delete(budgetName) //here i am getting exception
                 logger.info("Delete budget $budgetName successful")
                 refreshBudgets = true
                 true
             }
         }

下面是测试用例代码

     @Test
         fun deleteBudgetSuccessful() {
             val retrofit = mockk<Retrofit>()
             every { azureBudgetRepo.getBudgetDetails() } returns azureObj.value
             val requestJson = objectMapper.writeValueAsString("Budget_name")
             val mockHttpRequest = MockServerHttpRequest.put("/")
                     .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE)
                     .body(requestJson)
             val exchange = MockServerWebExchange.builder(mockHttpRequest).build()
             every { azureClientImpl.retrofit() } returns retrofit
           val result = costService.deleteBudget(exchange).block()
           /*StepVerifier.create(result)
             .expectNext(true)
             .expectComplete()
             .verify()*/
             Assertions.assertNotNull(result)
         }

当我运行此测试用例时,获得io.mockk.MockKException:没有找到针对BudgetsInner(#46).delete(Team)异常的答案,因为在执行测试时,调用 budgetsInner.delete(budgetName),但此方法的返回类型为 void ,因为此void返回类型的代码覆盖率不完整,并且测试用例失败。

0 个答案:

没有答案