[kotlin] Ktor Locations 테스트 방법

Ktor는 경로를 처리하고 파싱하기 위한 Ktor Locations이라는 라이브러리를 제공합니다. 이 라이브러리를 사용하면 URL 경로를 간편하게 다룰 수 있습니다.

Ktor Locations이란?

Ktor Locations은 Ktor에서 경로를 처리하기 위한 편리한 방법을 제공하는 라이브러리입니다. Ktor Locations을 사용하면 URL 경로를 다루는 데 필요한 기능들을 제공받을 수 있습니다.

Kotlin 코드에서 Ktor Locations을 사용하려면, @Location 어노테이션으로 경로를 정의하고, call.locations.href를 사용하여 URL을 생성하거나 call.referenced<YourLocation>()을 사용하여 경로에 대한 정보를 얻을 수 있습니다.

다음은 Ktor Locations을 사용한 Kotlin 코드의 간단한 예시입니다.

import io.ktor.application.*
import io.ktor.features.*
import io.ktor.http.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.locations.*
import io.ktor.response.*
import io.ktor.routing.*
import kotlin.test.*

@Location("/hello")
class Hello

fun Application.module() {
    install(Locations)
    
    routing {
        get<Hello> {
            call.respondText("Hello, World!")
        }
    }
}

fun main() {
    embeddedServer(Netty, port = 8080, module = Application::module).start(true)
}

Ktor Locations 테스트

Ktor Locations을 테스트하기 위해서는 Ktor의 테스팅 프레임워크를 활용하여 withTestApplication 함수를 사용합니다.

다음은 Ktor Locations을 테스트하는 Kotlin 코드의 예시입니다.

class LocationTest {
    @Test
    fun testHelloLocation() {
        withTestApplication({ module(testing = true) }) {
            handleRequest(HttpMethod.Get, "/hello").apply {
                assertEquals(HttpStatusCode.OK, response.status())
                assertEquals("Hello, World!", response.content)
            }
        }
    }
}

테스트 코드에서 withTestApplication 함수로 테스트용 애플리케이션을 생성하고, handleRequest 함수로 경로에 대한 요청을 처리하여 기대하는 응답을 확인할 수 있습니다.

이제 Ktor Locations을 사용한 애플리케이션을 쉽게 테스트할 수 있을 것입니다!