VitestのMatcher
not
primitive値が同じ、あるいは、objectの参照が同じ
メジャーだけど微妙に使わなそうじゃない?mrsekut.icon
参照が同じことをtestしたい時ってどういうケース?
toBeDefined
toBeUndefined
toBeTruthy
toBeFalsy
toBeNull
toBeNaN
toBeTypeOf
toBeInstanceOf
toBeGreaterThan
toBeGreaterThanOrEqual
toBeLessThan
toBeLessThanOrEqual
小数があると使えないのダルいな
値が同じ、構造が同じ
toEqual()とほぼ同じだが、より厳格
例えば、
{a: undefined, b: 2}と{b:2}を区別する
[,1]と[undefined,1]を区別する
逆に、あえてtoEqualを使うケースって何がある #?? toContain
配列内に特定の値があるかどうか
toContainEqual
toHaveLength
特定のpropertyが存在するかどうか
toMatch
正規表現を使って文字列がマッチするかどうか
objectのsubsetが含まれるかどうか
呼び出された回数の検証
呼び出されたときの引数の検証
toHaveBeenLastCalledWith
toHaveBeenNthCalledWith
toHaveReturnedTimes
toHaveReturnedWith
toHaveLastReturnedWith
toHaveNthReturnedWith
booleanを返す関数を渡してtrueを返すかどうか
code:例.ts
const isOdd = (value: number) => value % 2 !== 0
it('pass with 0', () => {
expect(1).toSatisfy(isOdd)
})
resolves
Promiseのresolve値を検証
rejects
test code自体が間違っていてexpect()が呼ばれていない、ということを防ぐ
expect.hasAssertions
expect.anything
expect.any
expect.arrayContaining
expect.objectContaining
expect.stringContaining
expect.stringMatching
expect.addSnapshotSerializer
matcherを独自に拡張する