Kotest Konform マッチャー(Konform Matchers)

Konform マッチャーは、指定したオブジェクトが検証に成功したか、または検証に失敗したかをテストで確認するために使用できる。

Kotest は Konform と一緒に使用できるさまざまなマッチャー(matchers)を提供する。このマッチャーは、指定したオブジェクトが検証に成功したか、または検証に失敗したかをテストで確認するために使用できる。

このマッチャーを使用するには、ビルドに io.kotest.extensions:kotest-assertions-konform:<version> implementation を追加する必要がある。このモジュールは JVM と JS の両方のターゲットで使用できる。

まず、基本のデータクラスを見る。

data class UserProfile(
   val fullName: String,
   val age: Int?
)

次に、次のようなユーザープロファイル検証器があるとする。

val validateUser = Validation<UserProfile> {
  UserProfile::fullName {
     minLength(4)
     maxLength(100)
  }

  UserProfile::age ifPresent {
     minimum(21)
     maximum(99)
  }
}

次のように、インスタンスが検証に成功するかをテストできる。

val alice = UserProfile("Alice", 25)
validateUser shouldBeValid alice

また、次のように特定のエラーメッセージでインスタンスが検証に失敗したかをテストできる。

val bob = UserProfile("bob", 18)
validateUser.shouldBeInvalid(bob) {
  it.shouldContainError(UserProfile::fullName, "must have at least 4 characters")
  it.shouldContainError(UserProfile::age, "must be at least '21'")
}
マッチャー 説明
validation.shouldBeValid(value) 指定した値に対する検証が有効であることを確認する。
validation.shouldBeInvalid(value) 指定した値に対する検証が無効であることを確認する。
validation.shouldBeInvalid(value) { block } 指定した値に対する検証が無効であることを確認し、無効な値でブロックを実行する。

参照