使用注入java和spring boot的RestTemplate类进行单元测试
我正在使用一个包含注入的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();
}
}
# 1 楼答案
您的测试似乎没有创建
RestTemplate
对象,因为没有处理注释@Mock
的代码。创建模拟有不同的方法。例如,您可以在init
方法中初始化mock有关更多选项,请查看Mockito's Javadoc