blog.unresolved.xyzblog.unresolved.xyz

Vitest導入覚書き

Sat Sep 30 2023
  • Next.js
  • Testing

Turborepo環境に配置したNext.jsVitestを入れようとして結構詰まったので、いろいろメモしておきます。

Next.js公式のサンプル

公式にもサンプルが配置されています。

next.js/examples/with-vitest at canary · vercel/next.js

コードを見た限りだとtesting-library/jest-domが有効にされていないように見えるので、matcherが使えない気がします。

testing-library/jest-domがVitestをサポート

このPRでサポートされました。

feat!: local types, supporting jest, @jest/globals, vitest by jgoz · Pull Request #511 · testing-library/jest-dom

v6.0.0のリリースに入ったようなので、比較的最近導入されたもののようです。

Release v6.0.0 · testing-library/jest-dom

これによって、これまでは vitest.setup.ts などで

1import matchers from '@testing-library/jest-dom/matchers'; 2import { expect } from 'vitest'; 3 4expect.extend(matchers);

のようにしていたのが、

1import '@testing-library/jest-dom/vitest'

だけで良くなりました。

導入した所感

比較的新しめのライブラリなので、ネット上にある情報がほとんど参考になりませんでした。

とはいえJestよりはTypeScriptネイティブな感じがありますし、Viteから派生しただけあってESM標準に作られているのが良かったです。

また、不要なライブラリをほとんど導入しなくて良いので、Jestよりはだいぶスマートな印象です。

とはいえ、JestはNext.jsが公式に next/jest というパッケージでサポートしている(next.js/examples/with-jest)ので、エコシステム的にはJestに軍配が上がるかなという印象です。

参考にさせていただきました

Vitest × testing-library雑めも