Jasmine: Adding custom matchers
A matcher is a function that returns an object with a
compare key. Usually it is registered with
beforeEach -> jasmine.addMatchers # Example matcher toBeAnything: -> compare: (actualValue, matcherArguments...) -> # Do some computations here ... # Return whether the actualValue matches the expectation pass: true
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, e.g. setting a helpful failure message.
I suggest putting generic matchers into
Note: There are collections of Jasmine matchers you could reuse. As always, avoid including huge libraries when you're only using a single feature of them. You might just copy the matchers you need over to your project.