Compatibility with Arrow
Helpers to fail tests when a function raises.
Example
Let's assume we want to test a function which raises when it receives a negative number:
data object NegativeSquareRoot
context(Raise<NegativeSquareRoot>)
fun sqrt(value: Double): Double {
ensure(value >= 0) { NegativeSquareRoot }
return kotlin.math.sqrt(value)
}
Content copied to clipboard
We can write a test that ensures the function does not raise, using failOnRaise:
test("√4 does not raise") {
failOnRaise {
sqrt(4.0)
} shouldBe 2.0
}
Content copied to clipboard
We can write a test that ensures the function does raise, using assertRaises or assertRaisesWith:
test("√-1 raises") {
// assert raises a specific value
assertRaises(NegativeSquareRoot) {
sqrt(-1.0)
}
// assert raises any value of a specific type
assertRaisesWith<NegativeSquareRoot> {
sqrt(-1.0)
}
}
Content copied to clipboard