У меня есть файл yml, в котором я храню свои переменные.Я обращаюсь к этим переменным в моей программе с помощью аннотации @Value.Проблема возникает, когда я пишу фиктивные тестовые случаи для таких методов, я получаю исключение нулевого указателя в моем методе теста.Я не уверен, где я иду не так.Я использую @TestPropertySource прямо сейчас.Мне нужен правильный способ сделать это.
Вот то, что я пробовал до сих пор.Мой файл yml выглядит следующим образом со многими свойствами:
car:
services:
clientId: abcde
authTokenUrl: ....
.....
public Class CarExecution(){
@Value("${car.services.clientId}")
private String clientId;
@Value("${car.services.authTokenUrl}")
private String authTokenUrl;
public String getAccessToken() {
HttpHeaders headers = new HttpHeaders();
headers.set(CONTENT_TYPE, "application/x-www-form-urlencoded");
headers.set(ACCEPT, APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<>("grant_type=password" + "&client_id=" + clientId ,headers);
ResponseEntity<Access> response = restTemplate.exchange(authTokenUrl, HttpMethod.POST, entity,A.class);
return response.getBody().token_type + " " +
response.getBody().access_token;
}
}
@RunWith(MockitoJUnitRunner.class)
@TestPropertySource(properties = {
"car.services.clientId = clientId ","car.services.authTokenUrl = authTokenUrl",
})
public class CarTest {
@Value("${car.services.clientId}")
private String clientId;
@Value("${car.services.authTokenUrl}")
private String authTokenUrl;
mockServer = MockRestServiceServer.createServer(restTemplate);
HttpHeaders headers = new HttpHeaders();
headers.set(CONTENT_TYPE, "application/x-www-form-urlencoded");
headers.set(ACCEPT, APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<>(
"grant_type=password&client_id=null", headers);
authTokenUrl = "";
new ResponseEntity<>("", HttpStatus.OK);
A access = new A();
access.access_token = "token";
access.token_type = "type";
response = new ResponseEntity<>(access, HttpStatus.OK);
Mockito.when(restTemplate.exchange(authTokenUrl, HttpMethod.POST, entity, A.class))
.thenReturn(response);