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 } |
指定した値に対する検証が無効であることを確認し、無効な値でブロックを実行する。 |