2

私はシンプルなハローワールド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 で単体テストを実行したいと考えています。より宣言的な方法で:

  1. テスト中に FakeRequest をルート (つまり/) に送信します。
  2. ページのコンテンツを取得し、文字列「hello」を確認します。

問題は、KotlinTest または Spek で上記のテストをより宣言的な方法で記述できるかどうかです。

4

1 に答える 1