0

我正在为一些我想模拟抛出异常的异步方法编写测试。这些方法是同步的,并且我们的测试工作正常,直到现在我使它们异步并且为了一些轻松,模拟的异常没有被抛出。

我的测试:

@MockBean
private RestTemplate rest

@Autowired
private ServiceImpl mockedService;

@Test(expected = MyException.class)
public void test1() {
    when(rest.exchange(Mockito.anyString(), 
            Mockito.any(HttpMethod.class), 
            Mockito.any(HttpEntity.class), 
            Mockito.eq(ParameterizedTypeReference.class)))
    .thenThrow(new MyException());

    this.mockedService.method();
}

我正在尝试测试的方法:

@Autowired
private RestTemplate rest;

@Override   
@Async
public void method() {

   ...      

  try {
    rest.exchange(builder.toUriString(), HttpMethod.GET, entity, new ParameterizedTypeReference<MyObject>() {});
    responseEntity.getBody();
  } catch (HttpClientErrorException | HttpServerErrorException e) {
    log.error("Hello");
    throw (e);
  } 

}

我得到了一个NullPointerException因为responseEntity.getBody();在不应该被调用的时候被调用,因为上面的行应该导致异常。

怎么了?谢谢!

4

0 回答 0