generated at
VitestのMatcher
from Vitest






not
primitive値が同じ、あるいは、objectの参照が同じ
Object.isと同じ
メジャーだけど微妙に使わなそうじゃない?mrsekut
参照が同じことをtestしたい時ってどういうケース?
JavaScriptの小数計算の誤差を加味したテストを書く
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を返すかどうか
例.ts
const isOdd = (value: number) => value % 2 !== 0 it('pass with 0', () => { expect(1).toSatisfy(isOdd) })
vi.toBeとかでなくわざわざこれ使うことあるの?別にいいけど
resolves
Promiseのresolve値を検証
rejects
test code自体が間違っていて expect() が呼ばれていない、ということを防ぐ
expect.hasAssertions
expect.anything
expect.any
expect.arrayContaining
expect.objectContaining
expect.stringContaining
expect.stringMatching
expect.addSnapshotSerializer




matcherを独自に拡張する