我正在使用Java 8中的CompletableFuture类,我必须测试我的代码,但是我很挣扎,因为我不知道如何测试此方法,还必须测试我使用的lambda。 。现在,我使用.join方法来阻止执行,问题是测试无法识别lambda变量。
我的代码如下:
public CompletableFuture<RegistrationInfoDTO> getRegisterInfo(InfoGuestDTO infoInvitedRequest) {
InvitedLookUpRequest invitedLookUpRequest = generalInfoInvitedToLookUp(infoInvitedRequest);
return getInfoInvitedService(invitedLookUpRequest)
.thenCompose(infoRegistration -> findInitialInformation(infoRegistration.getBody(), infoInvitedRequest));
}
这是我实施的测试:
@Test
public void findInvitedInfo() {
HttpHeaders headers = getTestHttpHeaders();
String mockURL = "url";
HttpEntity<SeaPassInfoDTO> requestEntity = new HttpEntity<>(seaPassRequestTest, headers);
given(kidRepository.existsById(anyString())).willReturn(true);
when(lookUpConfig.getSystem()).thenReturn("KidsClub");
when(lookUpConfig.getUrl()).thenReturn("anyURL");
when(restTemplate.exchange(mockURL, HttpMethod.POST, requestEntity, GuestResponse.class))
.thenReturn(new ResponseEntity<GuestResponse>(guestTest, HttpStatus.OK));
RegistrationInfoDTO seaPassRegistrationInfo =
guestGuestLookUpService.getRegistrationInformation(infoGuestDTO).join();
assertNotNull(seaPassRegistrationInfo);
}
运行测试时,出现错误,因为
中的infoRegistration变量.thenCompose(infoRegistration -> findInitialInformation(infoRegistration.getBody(), infoInvitedRequest));
我想知道如何使用lambda和异步操作来测试这种类型的方法。有什么建议吗?谢谢。