Jest Unit testing — Use of Matchers (Part1)
2 min readMar 7, 2021
What is matcher in Jest?
Jest uses matchers to test the unit test cases in different ways like matching the equal values, truthiness, numbers, strings, and so on.
Basic matchers
//strict equality
expect(10).toBe(10)
//strict equality (!==)
expect(10).not.toBe(5)
//Deep equality
expect([6, 9]).toEqual([6, 9])
expect({ a: 7, b: undefined}).toEqual({ a: 7})
//strict equality (version Jest 23+)
expect({ a: undefined, b: 9}).not.toStrictEqual({ b: 10})
Numbers
expect(9).toBeGreaterThan(5)
expect(5).toBeGreaterThanOrEqual(5)
expect(4).toBeLessThan(2)
expect(3).toBeLessThanOrEqual(3)
expect(0.3 + 0.2).toBeCloseTo(0.5, 5)
expect(NaN).toEqual(expect.any(Number))
Strings
expect('hello jest').toMatch('jest')
expect('string').toEqual(expect.any(String))
expect('toffee').toMatch(/ff/)
expect('pizza').not.toMatch('burger')
expect(['pizza', 'toffee']).toEqual([expect.stringContaining('zz'), expect.stringMatching(/ff/)])
Truthiness
// Matches anything that an if statement treats as true
(not false, 0, '', null, undefined, NaN)
xeTruthy()
// Matches anything that an if statement treats as false
(false, 0, '', null, undefined, NaN)
expect('').toBeFalsy()
// Matches only null
expect(null).toBeNull()
// Matches only undefined
expect(undefined).toBeUndefined()
// The opposite of toBeUndefined
expect(7).toBeDefined()
// Matches true or false
expect(true).toEqual(expect.any(Boolean))
Arrays
expect([]).toEqual(expect.any(Array))
expect(['Apple', 'Banana', 'Orange']).toHaveLength(3)
expect(['Apple', 'Apple', 'Apple']).toContain('Apple')
expect([{ a: 10 }, { a: 20 }]).toContainEqual({ a: 10 })
expect(['Apple', 'Banana', 'Orange']).toEqual(expect.arrayContaining(['Apple', 'Orange']))
Objects
expect({ a: 1 }).toHaveProperty('a')
expect({ a: 1 }).toHaveProperty('a', 1)
expect({ a: { b: 1 } }).toHaveProperty('a.b')
expect({ a: 1, b: 2 }).toMatchObject({ a: 1 })
expect({ a: 1, b: 2 }).toMatchObject({
a: expect.any(Number),
b: expect.any(Number)
})
expect([{ a: 1 }, { b: 2 }]).toEqual([
expect.objectContaining({ a: expect.any(Number) }),
expect.anything()
])
so these are the basic matchers to be used while writing unit test cases. For more reference refer below link
Thank you, comment below for any queries, hit the clap button to support.