Jest lets you register custom matchers via expect.extend({ myMatcher }).
Implement solve(op, ...args) supporting:
| Op | Args | Description |
|---|---|---|
'extend' | (name, fnBody) | Register a custom matcher. fnBody is the source of a function (received, ...expected) that returns { pass, message }. |
'match' | (name, received, ...expected) | Run the registered matcher. Returns its { pass, message }. |
'list' | — | Returns array of registered matcher names. |
solve('extend', 'toBeEven', 'return { pass: received % 2 === 0, message: received + " is not even" }')
solve('match', 'toBeEven', 4) // { pass: true, message: '4 is not even' }
solve('match', 'toBeEven', 3) // { pass: false, message: '3 is not even' }
solve('list') // ['toBeEven']If a matcher is not registered, return { pass: false, message: 'Unknown matcher: <name>' }.
Sample tests