如何声明在抛出异常后没有调用方法?

问题描述 投票:0回答:1

我有一个方法发布到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());
   }
java spring mocking mockito
1个回答
0
投票

过去我做过这个:

@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());
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.