Custom matching functions #
When built-in argument matchers aren’t sufficient, custom matchers can be written. A custom argument matcher simply needs to take in the argument as a parameter and return true if it matches, and false if it does not. This custom boolean function can then be passed to the special match function.
every {
mockedCar.drive(match { engine ->
engine.type === "Diesel"
})
} returns true
If the argument is nullable, a variant called matchNullable can be used instead.
every {
mockedCar.drive(matchNullable { engine ->
engine != null && engine.type === "Diesel"
})
} returns true
Matcher subclass
#
TODO extend Matcher<T>
Inline extension function helper #
TODO MockKMatcherScope extension function