Как использовать MicronautTest с Kotlintest для введения бобов во время тестирования? в Котлине - PullRequest
1 голос
/ 25 июня 2019

Как вставить следующее в Test, поскольку аргументы конструктора не разрешены и не удалось инициализировать введенные бины

@MicronautTest
class ApplicationTest:StringSpec() {

    @Inject
    lateinit val embeddedServer:EmbeddedServer;

    @Inject
    lateinit val dataSource:DataSource

    init{
        "test something"{
            //arrange act assert
        }
    }
}

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Поскольку тестовые случаи передаются как лямбда-конструктор родительскому классу, вы должны использовать инъекцию конструктора

@MicronautTest
class ApplicationTest(
    private val embeddedServer: EmbeddedServer,
    private val dataSource: DataSource
): StringSpec({

    "test something"{
        //arrange act assert
    }

})

Вы можете посмотреть на любой из тестов в проекте для рабочего примера.https://github.com/micronaut-projects/micronaut-test/blob/master/test-kotlintest/src/test/kotlin

1 голос
/ 26 июня 2019

Необходимо указать конфигурацию проекта, создав объект, производный от AbstractProjectConfig, назовите этот объект ProjectConfig и поместите его в пакет с именем io.kotlintest.provided.KotlinTest обнаружит его наличие и будет использовать любую конфигурацию, определенную там, при выполнении тестов.согласно документации https://github.com/kotlintest/kotlintest/blob/master/doc/reference.md#project-config

object ProjectConfig :AbstractProjectConfig() {
override fun listeners() = listOf(MicornautKotlinTestExtension)
override fun extensions() = listOf(MicornautKotlinTestExtension)
}
0 голосов
/ 25 июня 2019

Вы пытались написать свой код, как это?

@MicronautTest
class ApplicationTest:StringSpec() {

    val embeddedServer:EmbeddedServer

    val dataSource:DataSource


    @Inject
    ApplicationTest(embeddedServer:EmbeddedServer, dataSource:DataSource) {
      this.embeddedServer = embeddedServer
       this.dataSource = dataSource
    }

    init{
        "test something"{
            //arrange act assert
        }
    }
}

Это должно работать.

...