ниже актуальный код
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), потому что при выполнении теста вызывается budgettsInner.delete (budgetName ) но этот тип возвращаемого метода равен void , поскольку это пустое покрытие кода типа возвращаемого значения и тестовый случай не пройден.