はじめに
Vitestで使えるテストのマッチャーをまとめました。VitestはJest互換なため、Jestでも使用できます。ちなみにアサーションはexpect().toBe()
、マッチャーはtoBe()
の部分を指します。
マッチャー一覧
以下のテストはすべて成功します。
import { test, expect } from 'vitest'
test('同じを検証', () => {
expect(true).toBe(true)
expect(1).toBe(1)
expect('foo').toBe('foo')
expect(undefined).toBe(undefined)
})
test('同じでないを検証', () => {
expect(true).not.toBe(false)
expect(5).not.toBe(9)
expect('foo').not.toBe('bar')
expect(undefined).not.toBe(null)
})
test('真を検証', () => {
expect(true).toBeTruthy()
expect(1).toBeTruthy()
expect('foo').toBeTruthy()
})
test('偽を検証', () => {
expect(false).toBeFalsy()
expect(0).toBeFalsy()
expect('').toBeFalsy()
})
test('nullを検証', () => {
expect(null).toBeNull()
})
test('undefinedを検証', () => {
expect(undefined).toBeUndefined()
})
test('a > bを検証', () => {
expect(9).toBeGreaterThan(5)
})
test('a >= bを検証', () => {
expect(9).toBeGreaterThanOrEqual(5)
})
test('a < bを検証', () => {
expect(5).toBeLessThan(9)
})
test('a <= bを検証', () => {
expect(5).toBeLessThanOrEqual(9)
})
test('文字列を含むか検証・配列の要素を含むか検証', () => {
expect('foo').toContain('fo')
expect(['foo', 'bar']).toContain('foo')
})
test('正規表現を検証', () => {
expect('foo').toMatch(/oo$/)
})
test('文字列の長さを検証・配列の要素数を検証', () => {
expect('foo').toHaveLength(3)
expect(['foo', 'bar']).toHaveLength(2)
})
test('配列が同じか検証・オブジェクトが同じか検証', () => {
expect(['foo', 'bar']).toEqual(['foo', 'bar'])
expect({ name: 'taro', age: 15 }).toEqual({ name: 'taro', age: 15 })
})
test('配列が部分的に同じか検証', () => {
expect([
{ name: 'taro', age: 15 },
{ name: 'hanako', age: 20 },
]).toContainEqual({ name: 'taro', age: 15 })
})
test('オブジェクトが部分的に同じか検証', () => {
expect({ name: 'taro', age: 15 }).toMatchObject({ name: 'taro' })
})
test('オブジェクトのプロパティを含むか検証', () => {
expect({ name: 'taro', age: 15 }).toHaveProperty('name')
})
まとめ
Vitestで使えるテストのマッチャーをまとめました。toBe
を使えばある程度の検証はできるので、たくさんあって覚えるのが大変という方はとりあえずtoBe
だけ覚えれば良いと思います。
最後に
GoQSystemでは一緒に働いてくれる仲間を募集中です!
ご興味がある方は以下リンクよりご確認ください。