#spring-boot #kotlin #junit #properties
Вопрос:
Я хотел бы создать новый тест с файлом свойств, однако при запуске переменные всегда имеют значение null (конечно, только при тестировании).
Есть проблема с аннотацией kotlin / Spring boot ?
Это мой код.
приложение-тест.yml :
export:
path: /tmp/
filename: reports.csv
Тестовый файл :
@ContextConfiguration(initializers = [ConfigDataApplicationContextInitializer::class])
@EnableConfigurationProperties(value = [Config::class])
@ActiveProfiles("test")
internal class ControllerTest {
companion object {
@MockBean
var repository1: Repository1 = Mockito.mock(Repository1::class.java)
@MockBean
var repository2: Repository2 = Mockito.mock(Repository2::class.java)
var service: Service = Service(repository1, repository2)
}
// Some mocked object for repo
@Test
fun `export reports successfully`() {
val file = service.exportDatabase()
Assertions.assertEquals(
null,
file
)
}
Моя служба:
@Service
class IcaoService(
private val repository1: Repository1,
private val repository2: Repository2
) {
@Resource
private val config: Config = Config()
fun exportDatabase(): File {
val csvFile = File(config.path, config.filename)
csvFile.createNewFile()
val headers = listOf("id", "documentId", "mrz", "startDate", "duration", "datagroups", "error")
val reports = repository2.findAll()
csvWriter().open(csvFile, append = false) {
writeRow(headers)
reports.forEachIndexed { index, report ->
writeRow(index, report.documentId, report.mrz, report.startDate, report.duration, report.datagroups, report.error)
}
}
return csvFile
}
}
Комментарии:
1. Я не уверен, что суффиксы профиля используются с yaml.
2. @BoristheSpider Я использовал пару проектов с YAML, и я могу подтвердить, что суффиксы профиля действительно работают с ним. Однако в них использовались простые
@Value
аннотации; Я не знаком сConfig
тем, как устроен здешний класс, поэтому не могу это прокомментировать.