【Vue.js】Vitestを使ってtoMatchInlineSnapshotを実行してみる

こんにちは。野中やすおです。

今回の記事では、備忘がてら業務で使っているNuxt.js3 + Vitest + Testing Libraryを使って、よく使われるスナップショットテストの一種であるtoMatchInlineSnapshotを例にとってテストを実行します。

事前準備 – ライブラリのインストール編

今回の例ではパッケージマネージャーにyarnを使おうと思います。

1. Viestのインストール

まずは、公式ドキュメントを参考にVitestをインストールします。

Next generation testing framework powered by Vite…

2. Vue Test Utilsのインストール

テストコードにshallowMountを使うため、Vue Test Utilsもインストールしておきます。
shallowMountの説明については以下の別記事でしています。こちらもぜひ参考にしてみてください。
mount、shallowMountの説明

こんにちは。野中やすおです。 mountとは何か? Vue Test Utilsのmountは、Vueコンポーネントをフルレンダリングするためのメソッドです。mountメソッドを使うことでテスト中に Vueコンポーネントを実際に DOM[…]

公式HPも重要ですね。

The official testing suite utils for Vue.js 3…

3. Vue Test Utils

テスト時のコンポーネント状態を確認するための便利なメソット群を提供するTesting Libraryjest-domをインストールします。
こちらも別記事でまとめようと思います。

jest-dom is a companion library for Testing Library that pro…

4. Nuxt-Vitestのインストール

そして、のちのち追加するvitest.config.tsの設定に必要なNuxt-Vitestをインストールします。

こちらは、公式でhappy-domのインストールも推奨されているので、一緒に追加します。

こちらも別記事でまとめようと思います。

事前準備 – テスト設定編

テストに必要なライブラリのインストールが終わったらテストに必要な設定をしていきます。

これを事前にしておくことでスムーズにテストを実行することができます。

1. setupファイルの作成

まずは、リポジトリのルートディレクトリにtestフォルダを作成し、その中にsetup.tsファイルを作成します。setup.tsファイルの中には以下のように記述します。

2. Vitestの設定を追加

vitest.config.tsをルートディレクトリに新規作成し、以下のようにファイルに追加します。

さらに詳しいVitest configについては公式HPが参考になります。こちらも記事にしてもいいかもしれませんね。

Next generation testing framework powered by Vite…

テストファイル作成編

テストの設定が終わったらいよいよテストファイルを作成していきます。

以下のファイルHelloVitestComponent.vueをテスト対象のファイルとします。

テスト対象のファイル

Hello, Worldと表示されるとてもシンプルなものですね。

テストファイル

テストファイルHelloVitestComponent.spec.tsは以下のようにtoMatchInlineSnapshotを使用して記述し、Hello, Worldがレンダリングされているか確認します。

テスト実行

テストは以下のコマンドで実行します。

実行するとテストが通過していることがわかります!

vitestは基本実行がwatchモードなのでqを押すとテストが終了します。

Next generation testing framework powered by Vite…

そしてテスト実行後は、自動的にtoMatchInlineSnapshotの中にレンダリング内容が追加されていることが確認できます!

以上、Nuxt.js3 + Vitest + Testing LibraryでtoMatchInlineSnapshotのテスト実行を行いました。テスト実行環境が少し前より劇的によくなった感じです。

より良いテストライフを楽しむために私も学習を続けていきます!

参考

Next generation testing framework powered by Vite…