如何洗掉try-catch塊用于assertThat在ifPresent()?編譯器只給了我一個使用assertThatin 的選項ifPresent(),就是用 try-catch 塊包圍它。再次拋出例外也是不允許的。
@Test
public void testPostRequestThenSaveResponse()
throws HttpStatusCodeException, JsonProcessingException, IllegalArgumentException, IOException {
// Should success.
try {
ServiceAssignmentImpl.httpPostDeliveryOrder(url, token, sod, customerSite, customer, item, uom, driver)
.ifPresent((deliveryOrderResponse) -> {
// increase DO number for next test.
deliveryOrderNum ;
DeliveryOrderResponse savedDOResponse = deliveryOrderResponseRepository
.save(deliveryOrderResponse);
DeliveryOrderResponse fetchedDOResponse = deliveryOrderResponseRepository
.findOne(savedDOResponse.getId());
try {
assertThat(json.write(fetchedDOResponse))
.isEqualTo(objectMapper.writeValueAsString(deliveryOrderResponse));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
});
} catch (HttpStatusCodeException e) {
// need getResponseBodyAsString() to see detail error message.
System.out.println("** HttpStatusCodeException: " e.getResponseBodyAsString());
throw e;
}
}
uj5u.com熱心網友回復:
只需使用.get(),如果回應不存在,您的測驗不應通過,因此無需使其成為條件。
在沒有 MCVE 的情況下,我已經盡可能地調整了您的代碼。
@Test
public void testPostRequestThenSaveResponse()
throws HttpStatusCodeException, JsonProcessingException, IllegalArgumentException, IOException {
// Should success.
try {
var = deliveryOrderResponseServiceAssignmentImpl.httpPostDeliveryOrder(url, token, sod, customerSite, customer, item, uom, driver).get()
// increase DO number for next test.
deliveryOrderNum ;
DeliveryOrderResponse savedDOResponse = deliveryOrderResponseRepository
.save(deliveryOrderResponse);
DeliveryOrderResponse fetchedDOResponse = deliveryOrderResponseRepository
.findOne(savedDOResponse.getId());
assertThat(json.write(fetchedDOResponse))
.isEqualTo(objectMapper.writeValueAsString(deliveryOrderResponse));
} catch (HttpStatusCodeException e) {
// need getResponseBodyAsString() to see detail error message.
System.out.println("** HttpStatusCodeException: " e.getResponseBodyAsString());
throw e;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/345889.html
