最終更新日: 2023年08月15日
テスト
Nuxtアプリケーションをテストする方法
Info 詳細なモジュール作成ガイドはこちらから。
Nuxt3では、@nuxt/test-utilsの書き直されたバージョンが利用可能です。テストランナーとしてVitestとJestをサポートしています。
インストール
- npx
- bash
yarn add --dev @nuxt/test-utils vitestセットアップ
@nuxt/test-utilsのヘルパーメソッドを利用する各describeブロックで、始める前にテストコンテキストをセットアップする必要があります。
- ts
import { describe, test } from "vitest";
import { setup, $fetch } from "@nuxt/test-utils";
describe("My test", async () => {
await setup({
// test context options
});
test("my test", () => {
// ...
});
}); 裏側では、setupはbeforeAll、beforeEach、afterEach、およびafterAllでいくつかのタスクを実行して、Nuxtのテスト環境を正しくセットアップします。
オプション
Nuxtの設定
rootDir
- Type:
string - Default:
'.'
configFile
- Type:
string - Default:
'nuxt.config'
セットアップのタイミング
setupTimeoutsetupTestがその作業を完了するのに許容される時間(ミリ秒単位)の量(これには、渡されたオプションに応じてNuxtアプリケーションのビルドやファイルの生成などが含まれる場合があります)
- Type:
number - Default:
60000
有効にする機能
serverテストスイート内のリクエストに応答するためにサーバーを起動するかどうか
- Type:
boolean - Default:
true
port指定された場合、起動されたテストサーバーのポートを指定された値に設定します。
- Type:
number | undefined - Default:
undefined
build別のビルドステップを実行するかどうか
- Type:
boolean - Default:
true (false if browser or server is disabled)
browser裏側では、NuxtのテストユーティリティはPlaywrightを使用してブラウザテストを実行します。このオプションが設定されている場合、ブラウザが起動され、その後のテストスイートで制御することができます。(詳細はこちらで確認できます。)
- Type:
boolean - Default:
false
browserOptionsNuxtのテストユーティリティは、内部的にPlaywrightを使用してブラウザテストを実行します。このオプションが設定されている場合、ブラウザが起動され、その後のテストスイートで制御することができます。(詳細はこちらで確認できます。)
Type: 次のプロパティを持つオブジェクト
- type: 起動するブラウザのタイプ - chromium、Firefox、Webkit のいずれか
- launch: ブラウザの起動時に playwright に渡されるオプションのオブジェクト。 API リファレンスを参照してください。
runnerテストスイートのランナーを指定します。現在はVitestが推奨されています。
- Type:
'vitest' | 'jest' - Default:
'vitest'
APIs
レンダリングテストのためのAPI
$fetch(url) サーバーでレンダリングされたページの HTML を取得します。
- ts
import { $fetch } from '@nuxt/test-utils'
const html = await $fetch('/')$fetch(url) サーバーでレンダリングされたページのレスポンスを取得します。
- ts
import { fetch } from '@nuxt/test-utils'
const res = await fetch('/')
const { body, headers } = resurl(path) 指定されたページの完全な URL を取得します(テストサーバーが実行されているポートを含む)。
- ts
import { url } from '@nuxt/test-utils'
const pageUrl = url('/page')
// 'http://localhost:6840/page'