セットアップ
Vitestの使用を推奨しますが、ESM互換性のある任意のテストランナーでライブラリを自由に使用できます。
Vitest
開発依存関係を追加
@testing-library/svelte
@testing-library/jest-dom
(オプションですが、強く推奨します)@sveltejs/vite-plugin-svelte
vitest
jsdom
、happy-dom
、またはその他のVitest DOM環境
- npm
- Yarn
npm install --save-dev \
@testing-library/svelte \
@testing-library/jest-dom \
@sveltejs/vite-plugin-svelte \
vitest \
jsdomyarn add --dev \
@testing-library/svelte \
@testing-library/jest-dom \
@sveltejs/vite-plugin-svelte \
vitest \
jsdomオプションで
@vitest/ui
をインストールすると、テストの進捗状況を追跡し、テストを操作するためのUIがブラウザウィンドウで開きます。- npm
- Yarn
npm install --save-dev @vitest/ui
yarn add --dev @vitest/ui
オプションで
@testing-library/jest-dom
のexpectマッチャーを設定するために、vitest-setup.js
ファイルを追加します。vitest-setup.jsimport '@testing-library/jest-dom/vitest'
vitest.config.js
を追加するか、既存のvite.config.js
をsvelte
およびsvelteTesting
Viteプラグインで更新します。テスト環境を任意のDOMライブラリに設定し、オプションでステップ(2)で作成したセットアップファイルを構成します。vite.config.jsimport {defineConfig} from 'vitest/config'
import {svelte} from '@sveltejs/vite-plugin-svelte'
import {svelteTesting} from '@testing-library/svelte/vite'
export default defineConfig({
plugins: [svelte(), svelteTesting()],
test: {
environment: 'jsdom',
setupFiles: ['./vitest-setup.js'],
},
})または、SvelteKitを使用している場合
vite.config.jsimport {defineConfig} from 'vitest/config'
import {sveltekit} from '@sveltejs/kit/vite'
import {svelteTesting} from '@testing-library/svelte/vite'
export default defineConfig({
plugins: [sveltekit(), svelteTesting()],
test: {
environment: 'jsdom',
setupFiles: ['./vitest-setup.js'],
},
})注意svelteTesting
プラグインtest.setupFiles
に自動クリーンアップフィクスチャを追加resolve.conditions
にbrowser
を追加
必要に応じて、いずれかの動作を無効にできます。両方のオプションを無効にすることは、プラグインを省略するのと同じです。
svelteTesting({
// disable auto cleanup
autoCleanup: false,
// disable browser resolution condition
resolveBrowser: false,
})browser
条件の解決は、複雑なVite構成またはNode.jsにロードできない依存関係がある場合に問題が発生する可能性があります。Svelteのブラウザコードが確実に使用されるようにするための詳細および代替構成オプションについては、testing-library/svelte-testing-library#222を参照してください。Vitestでテストを実行するために、
package.json
にテストスクリプトを追加しますpackage.json{
"scripts": {
"test": "vitest run",
"test:ui": "vitest --ui",
"test:watch": "vitest"
}
}コンポーネントとテストファイルを作成し(方法についてはドキュメントの残りの部分を参照してください)、次のコマンドを実行してテストを実行します。
- npm
- Yarn
npm test
yarn test
Jest
@testing-library/svelte
はESMのみであるため、ESMモードでJestを使用する必要があります。
開発依存関係を追加
@testing-library/svelte
@testing-library/jest-dom
(オプションですが、強く推奨します)svelte-jester
jest
jest-environment-jsdom
- npm
- Yarn
npm install --save-dev \
@testing-library/svelte \
@testing-library/jest-dom \
svelte-jester \
jest \
jest-environment-jsdomyarn add --dev \
@testing-library/svelte \
@testing-library/jest-dom \
svelte-jester \
jest \
jest-environment-jsdom@testing-library/jest-dom
を使用する場合は、jest-setup.js
ファイルを追加して構成します。jest-setup.jsimport '@testing-library/jest-dom'
jsdomを使用し、Svelteファイルを変換し、セットアップファイルを使用するようにJestを構成します
jest.config.jsexport default {
transform: {
'^.+\\.svelte$': 'svelte-jester',
},
moduleFileExtensions: ['js', 'svelte'],
extensionsToTreatAsEsm: ['.svelte'],
testEnvironment: 'jsdom',
setupFilesAfterEnv: ['<rootDir>/jest-setup.js'],
}注意Svelte 5を使用している場合は、
svelte-jester@5
以降を使用する必要があり、Jest構成に追加の変更を加える必要があります。transform
を更新して、.svelte.(js|ts)
モジュールをコンパイルしますnode_modules
にある場合でも、@testing-library/svelte
が変換されるようにします
jest.config.jsexport default {
transform: {
- '^.+\\.svelte$': 'svelte-jester',
+ '^.+\\.svelte(\\.(js|ts))?$': 'svelte-jester',
},
+ transformIgnorePatterns: [
+ '/node_modules/(?!@testing-library/svelte/)',
+ ],
moduleFileExtensions: ['js', 'svelte'],
extensionsToTreatAsEsm: ['.svelte'],
testEnvironment: 'jsdom',
setupFilesAfterEnv: ['<rootDir>/jest-setup.js'],
}package.json
に以下を追加しますpackage.json{
"scripts": {
"test": "npx --node-options=\"--experimental-vm-modules\" jest src",
"test:watch": "npx --node-options=\"--experimental-vm-modules\" jest src --watch"
}
}コンポーネントとテストファイルを作成し(方法についてはドキュメントの残りの部分を参照してください)、実行します
- npm
- Yarn
npm test
yarn test
TypeScriptとプリプロセッサ
JestでTypeScriptを使用するには、svelte-preprocess
とts-jest
をインストールして構成する必要があります。完全な手順については、svelte-jester
ドキュメントを参照してください。
その他のSvelteプリプロセッサを含める場合は、svelte-jester
ドキュメントを参照してください。