我有一个方法发布到API,然后在方法中的调用后执行其他业务逻辑。如果在发布到API时因任何原因出现问题,API将返回异常。我不想捕获此异常,因为我不希望代码继续执行。到目前为止,在我的单元测试中,我已经嘲笑了API并编写了when(APIService.postDetails(any())).thenThrow(Exception.class)
并断言我已经验证了一些方法在mockito中通过verify
方法被调用了0次。
当我尝试运行测试时,测试失败。我得到了一个预期的java.lang.Exception
,但我也期待单元测试在验证时断言。可能吗?
测试:
@Test
public void shouldCallPublishZeroTimes(){
Account account = Account.builder()
.street("ZBC123")
.address("123456")
.postcode("w19uu")
.build();
List<Account> accountList = new ArrayList<>();
accountList.add(account);
when(customerDB.getExistingClient(any())).thenThrow(Exception.class);
client.createAccount();
verify(eventPublisher, times(0)).publish(any());
}
过去我做过这个:
@Test
public void shouldCallPublishZeroTimes(){
Account account = Account.builder()
.street("ZBC123")
.address("123456")
.postcode("w19uu")
.build();
List<Account> accountList = new ArrayList<>();
accountList.add(account);
when(customerDB.getExistingClient(any())).thenThrow(Exception.class);
try {
client.createAccount();
fail();
} catch (Exception e) {
verify(eventPublisher, times(0)).publish(any());
}
}