EasyPythonJavaScriptTypeScript
Implement expect() Matchers
TestingUtilities
Implement a lightweight version of Jest's expect() API.
solve(matcher, received, expected?) must support these matchers:
| Matcher | Description |
|---|---|
'toBe' | Strict equality (===). expected required. |
'toEqual' | Deep equality (nested objects/arrays). expected required. |
'toBeTruthy' | Passes if received is truthy. |
'toBeFalsy' | Passes if received is falsy. |
'toBeNull' | Passes if received === null. |
'toBeUndefined' | Passes if received === undefined. |
'toBeDefined' | Passes if received !== undefined. |
Return an object { pass: boolean, message: string }.
When passing, message is ''.
When failing, message is a human-readable explanation, e.g.:
"Expected 5 but received 3""Expected value to be truthy but received false"
solve('toBe', 42, 42) // { pass: true, message: '' }
solve('toBe', 42, 43) // { pass: false, message: 'Expected 43 but received 42' }
solve('toEqual', {a:1}, {a:1}) // { pass: true, message: '' }
solve('toBeTruthy', 0) // { pass: false, message: 'Expected value to be truthy but received 0' }Sample tests
Test #1toBe — matching numbers
Input: ["toBe",42,42]
Output: {"pass":true,"message":""}
Test #2toBe — mismatch
Input: ["toBe",42,43]
Output: {"pass":false,"message":"Expected 43 but received 42"}
Test #3toBe — strings match
Input: ["toBe","hello","hello"]
Output: {"pass":true,"message":""}
Test #4toEqual — deep objects match
Input: ["toEqual",{"a":1,"b":[2,3]},{"a":1,"b":[2,3]}]
Output: {"pass":true,"message":""}
Test #5toEqual — deep mismatch
Input: ["toEqual",{"a":1},{"a":2}]
Output: {"pass":false,"message":"Expected {\"a\":2} but received {\"a\":1}"}
Test #6toBeTruthy — truthy value
Input: ["toBeTruthy",1]
Output: {"pass":true,"message":""}
Test #7toBeTruthy — falsy value
Input: ["toBeTruthy",0]
Output: {"pass":false,"message":"Expected value to be truthy but received 0"}