【发布时间】:2019-11-21 10:40:29
【问题描述】:
我正在使用注入了 RestTemplate 的类运行单元测试,并且只有在我运行测试时,RestTemplate 在使用我正在使用的 API 后才会变为 null。
class ReceitaWsIntegrationImpl implements ReceitaWsIntegration {
private static final String URL_RECEITA_WS_CNPJ
= "https://www.receitaws.com.br/v1/cnpj";
private final RestTemplate restTemplate;
@Override
public void findByCnpj(String cnpj) {
ResponseEntity<CnpjResource> forEntity = restTemplate.getForEntity(
URL_RECEITA_WS_CNPJ.concat("/").concat(cnpj), CnpjResource.class);
}
}
测试类:
public class ReceitaWsIntegrationImplTest extends TestSupport {
private static final String CNPJ = "27865757000102";
private static final String URL_RECEITA_WS_CNPJ = "https://www.receitaws.com.br/v1/cnpj/";
@Mock
private RestTemplate restTemplate;
private ReceitaWsIntegration receitaWsIntegration;
@Override
public void init() {
receitaWsIntegration = new ReceitaWsIntegrationImpl(restTemplate);
}
@Test
public void should_find_company_by_cnpj() {
receitaWsIntegration.findByCnpj(CNPJ);
InOrder inOrder = inOrder(restTemplate);
inOrder.verify(restTemplate, times(1))
.getForEntity(URL_RECEITA_WS_CNPJ.concat(CNPJ), CnpjResource.class);
inOrder.verifyNoMoreInteractions();
}
}
【问题讨论】:
-
你可以使用
RefelectionTestUtils.setFielddocs.spring.io/spring/docs/current/javadoc-api/org/… -
用
@Before注释init方法你应该很好
标签: java spring-boot junit mockito resttemplate