Kotest Ktor マッチャー(Ktor Matchers)

Ktor マッチャーについて説明する。

コードは別のリポジトリと、別グループである io.kotest.extensions に保管されている。

Full Dependency

implementation("io.kotest.extensions:kotest-assertions-ktor:version")
implementation "io.kotest.extensions:kotest-assertions-ktor:version"

Ktor 向けのマッチャーは、kotest-assertions-ktor モジュールで提供される。

Test Application Response

Ktor サーバーテストキットを通じてテストする場合、次のマッチャーが使用される。

マッチャー 説明
TestApplicationResponse.shouldHaveStatus(HttpStatusCode) レスポンスが指定した HTTP ステータスコードを持つことを確認する。
TestApplicationResponse.shouldHaveContent(content) レスポンスが指定した本文を持つことを確認する。
TestApplicationResponse.shouldHaveContentType(ContentType) レスポンスが指定したコンテンツタイプを持つことを確認する。
TestApplicationResponse.shouldHaveHeader(name, value) レスポンスに指定した name=value ヘッダーが含まれることを確認する。
TestApplicationResponse.shouldHaveCookie(name, value) レスポンスに指定した Cookie が含まれることを確認する。
TestApplicationResponse.shouldHaveCacheControl(value) レスポンスに指定した cache-control ヘッダーが含まれることを確認する。
TestApplicationResponse.shouldHaveETag(value) レスポンスに指定した ETag ヘッダーが含まれることを確認する。
TestApplicationResponse.shouldHaveContentEncoding(value) レスポンスに指定した content-encoding ヘッダーが含まれることを確認する。

HttpResponse

Ktor HTTP クライアントのレスポンスには、次のマッチャーを使用できる。

マッチャー 説明
HttpResponse.shouldHaveStatus(HttpStatusCode) レスポンスが指定した HTTP ステータスコードを持つことを確認する。
HttpResponse.shouldHaveContentType(ContentType) レスポンスが指定したコンテンツタイプを持つことを確認する。
HttpResponse.shouldHaveHeader(name, value) レスポンスに指定した name=value ヘッダーが含まれることを確認する。
HttpResponse.shouldHaveVersion(HttpProtocolVersion) レスポンスが指定したプロトコルバージョンを使用したことを確認する。
HttpResponse.shouldHaveCacheControl(value) レスポンスに指定した cache-control ヘッダーが含まれることを確認する。
HttpResponse.shouldHaveETag(value) レスポンスに指定した ETag ヘッダーが含まれることを確認する。
HttpResponse.shouldHaveContentEncoding(value) レスポンスに指定した content-encoding ヘッダーが含まれることを確認する。

参照