私はシンプルなハローワールドKtorアプリを持っています:
fun Application.testMe() {
intercept(ApplicationCallPipeline.Call) {
if (call.request.uri == "/")
call.respondText("Hello")
}
}
ドキュメントに記載されているように、JUnit テスト クラスを使用してテストを記述できます。次のように:
class ApplicationTest {
@Test fun testRequest() = withTestApplication(Application::testMe) {
with(handleRequest(HttpMethod.Get, "/")) {
assertEquals(HttpStatusCode.OK, response.status())
assertEquals("Hello", response.content)
}
with(handleRequest(HttpMethod.Get, "/index.html")) {
assertFalse(requestHandled)
}
}
}
ただし、ScalaTest/Play で行うのと同じように、JUnit の助けを借りずに、Spek または KotlinTest で単体テストを実行したいと考えています。より宣言的な方法で:
- テスト中に FakeRequest をルート (つまり
/
) に送信します。 - ページのコンテンツを取得し、文字列「hello」を確認します。
問題は、KotlinTest または Spek で上記のテストをより宣言的な方法で記述できるかどうかです。