Как прочитать переменную из application.yml при весенней загрузке и использовать ее в тесте kotlin - PullRequest
0 голосов
/ 06 сентября 2018
src
  main
    java
       config
          DataSourceProperties.java
    resources
      application.yml
  test
    kotlin
      service
          AuthService.kt
  1. У меня есть application.yml Изображение файла application.yml
  2. У меня есть класс настройки Java

     @Configuration
     @ConfigurationProperties(prefix = "datasource")
    class DataSourceProperties {
       private String apiUrl;
       public String getApiUrl() { return apiUrl; }
       public void setUrl(String apiUrl) {
          this.apiUrl = apiUrl;
    }
    
  3. У меня есть класс обслуживания kotlin

     @RunWith(SpringRunner::class)
     @SpringBootApplication
     @Profile("dev")
     class AuthService {
       @Value("\${datasource.apiUrl}")
       lateinit var apiUrl: String
       fun registerUser(user: RequestUser): ErrorResponse {
        return given()
                .log().all()
                .body(user)
                .contentType(ContentType.JSON)
                .`when`().post("$apiUrl/security")
                .then().statusCode(StatusCodes.BAD_REQUEST)
                .extract()
                .`as`(ErrorResponse::class.java)
        }
    }
    

Когда я выполняю запрос в моем тесте, я получаю

kotlin.UninitializedPropertyAccessException: свойство lateinit apiUrl не было инициализировано

Вот почему у меня есть вопрос? Как я могу использовать свойства из файла YML в тестовом классе. Может быть, я пропускаю другой конфиг, может быть, я не прав с аннотациями, или, возможно, это зависит от расположения файла configure, yml и тестовых файлов в структуре. Пожалуйста, дайте мне подсказку.

1 Ответ

0 голосов
/ 06 сентября 2018

Попробуйте установить просто, например, должно помочь - @TestPropertySource(properties = ["spring.mail.properties.mail.smtp.auth: false", "spring.mail.properties.mail.smtp.starttls.enable: false"])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...