Dominik Sandjaja
09/14/2023, 7:09 AMexpected:<200 OK> but was:<404 Not Found>
It seems like the init{}
block of the KtorMyModule
is not executed any more although it is configured with createdAtStart = true
.Dominik Sandjaja
09/14/2023, 7:09 AMimport io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import io.ktor.client.HttpClient
import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.*
import io.ktor.server.response.respond
import io.ktor.server.routing.*
import io.ktor.server.testing.testApplication
import org.junit.jupiter.api.Test
import org.koin.dsl.module
import org.koin.ktor.plugin.Koin
class ReproducerTest {
@Test
fun `minimalistic reproducer`() {
testMyApplication {
val response = it.get("testurl") {}
response.status.shouldBe(HttpStatusCode.OK)
response.bodyAsText().shouldContain("Test response")
}
}
private fun testMyApplication(test: suspend (jsonClient: HttpClient) -> Unit) = testApplication {
application {
install(Koin) {
modules(
module {
single { this@application }
single(createdAtStart = true) { KtorMyModule(get()) }
},
)
}
}
test.invoke(createClient {})
}
}
class KtorMyModule(application: Application) {
init {
application.routing {
get("testurl") { call.respond(HttpStatusCode.OK, "Test response") }
}
}
}
arnaud.giuliani
09/14/2023, 9:07 AMDominik Sandjaja
09/14/2023, 10:44 AMarnaud.giuliani
09/14/2023, 12:13 PMslf4jLogger(DEBUG)
arnaud.giuliani
09/14/2023, 1:42 PMarnaud.giuliani
09/14/2023, 1:43 PMDominik Sandjaja
09/14/2023, 1:43 PM15:41:13.635 [DefaultDispatcher-worker-1 @call-context#2] INFO ktor.test - No ktor.deployment.watch patterns specified, automatic reload is not active.
15:41:13.684 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - (+) index 'KtorMyModule::_root_' -> '[Singleton:'KtorMyModule']'
15:41:13.684 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - (+) index 'io.ktor.server.application.Application::_root_' -> '[Singleton:'io.ktor.server.application.Application']'
15:41:13.685 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - loaded 2 definitions in 1.206667 ms
15:41:13.687 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - Eager instances ...
15:41:13.688 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - | (+) '[Singleton:'KtorMyModule']'
15:41:13.689 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - |- 'io.ktor.server.application.Application' ...
15:41:13.689 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - | (+) '[Singleton:'io.ktor.server.application.Application']'
15:41:13.689 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - |- 'io.ktor.server.application.Application' in 0.088958 ms
15:41:13.707 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - Eager instances created in 20.04725 ms
15:41:13.708 [DefaultDispatcher-worker-1 @call-context#2] INFO ktor.test - Application started in 0.085 seconds.
15:41:14.065 [Test worker] DEBUG [Koin] - |- (-) Scope - id:'_root_'
3.5.0:
15:33:28.495 [DefaultDispatcher-worker-1 @call-context#2] INFO ktor.test - No ktor.deployment.watch patterns specified, automatic reload is not active.
15:33:28.546 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - (+) index 'KtorMyModule::_root_' -> '[Singleton:'KtorMyModule']'
15:33:28.547 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - (+) index 'io.ktor.server.application.Application::_root_' -> '[Singleton:'io.ktor.server.application.Application']'
15:33:28.547 [DefaultDispatcher-worker-1 @call-context#2] DEBUG [Koin] - Koin started with 2 definitions in 1.310375 ms
15:33:28.550 [DefaultDispatcher-worker-1 @call-context#2] INFO ktor.test - Application started in 0.066 seconds.
15:33:28.606 [DefaultDispatcher-worker-1 @request#2] DEBUG [Koin] - |- (+) Scope - id:'org.koin.ktor.plugin.RequestScope@1295830128' q:q:'org.koin.ktor.plugin.RequestScope'
15:33:28.606 [DefaultDispatcher-worker-1 @request#2] DEBUG [Koin] - | Scope 'q:'org.koin.ktor.plugin.RequestScope'' not defined. Creating it ...
15:33:28.885 [DefaultDispatcher-worker-1 @request#2] DEBUG [Koin] - |- (-) Scope - id:'org.koin.ktor.plugin.RequestScope@1295830128'
Expected :200 OK
Actual :404 Not Found
<Click to see difference>
io.kotest.assertions.AssertionFailedError: expected:<200 OK> but was:<404 Not Found>
...
Dominik Sandjaja
09/14/2023, 1:44 PMarnaud.giuliani
09/14/2023, 1:44 PM