Definition
A matcher is a function that returns an object with a compare
key. Usually it is registered with beforeEach
:
beforeEach(() => {
jasmine.addMatchers({
// Example matcher
toBeAnything() {
return {
compare(actualValue, ...matcherArguments) {
// Do some computations here ...
// Return whether the actualValue matches the expectation
return {pass: true}
}
}
}
})
})
Usage
expect(actualValue).toBeAnything(...matcherArguments)
When a matcher is invoked, Jasmine will call its compare()
function with the actualValue
, followed by any arguments passed to the matcher. It should process them to determine whether the expectation is fulfilled, and return an object with a pass: true/false
pair.
As you can see in the linked article, the object returned by compare()
supports
a few more options
Show archive.org snapshot
, e.g. setting a helpful failure message.
Definition location
I suggest putting generic matchers into spec/javascripts/support/matchers/
, and specific matchers into the file where they're needed.
Matcher libraries
There are some libraries that provide additional matchers to Jasmine: