【发布时间】:2020-01-31 15:21:21
【问题描述】:
我在 spring 项目中工作,我有一个使用 Restemplate 调用另一个 api 的服务,该服务只返回一个字符串作为令牌,对我来说一切正常,这是我的服务:
@Service
public class AppServiceImpl {
@Value("${rest.appUrl}")
private String appUrl;
@Value("${credType}")
private String credType;
@Autowired
private RestTemplate restTemplate;
public String getToken() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("grant_type", credType);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
ResponseEntity<TargetObject> response = restTemplate.exchange(appUrl, HttpMethod.POST, request, TargetObject.class);
TargetObject targetObject = response.getBody();
return "Bearer " + targetObject.getToken();
}
}
我的问题是,当我想对该服务进行单元测试时,我得到 NullPointerException,但我不知道为什么,这是我的单元测试:
@RunWith(SpringRunner.class)
public class AppServiceImplTest {
private AppService appService = new AppServiceImpl();
@Test
public void getTokenTest() {
String token = appService.getToken();
assertTrue(token != null);
}
}
这一行中的 NullPointerException :
ResponseEntity<TargetObject> response = restTemplate.exchange(appUrl, HttpMethod.POST, request, TargetObject.class);
你知道我的测试有什么问题吗?我花了几个小时没有任何结果
提前致谢
【问题讨论】: