【備忘】【Vue】【Jest】Vue Test Utilsでテストするための環境を構築する
Vue Test Utilsでテストするための環境構築
(認識等に誤りがあれば、ご指摘お願いいたします)
パッケージインストール
// Jest(テストフレームワーク)をインストール
npm install --save-dev jest
// @vue/test-utils:Vueの単体テストを行うためのライブラリ
// vue-jest:.vueファイルのトランスパイラー(テストファイルで.vueファイルを使用するため)
npm install --save-dev @vue/test-utils vue-jest
// babelモジュール:jsファイルのトランスパイルを行うため
npm install --save-dev babel-jest @babel/core @babel/preset-env babel-core@^7.0.0-bridge.0
Jest設定ファイル
jest.config.js
module.exports = {
// verboseをtrueにすることで、テストケースごとの結果を出力する。なので、trueを設定しておくのが良い。
// デフォルトはfalseで、テストファイルごとの結果のみの出力となる(各テストケースの結果は不明)
verbose: true,
// Jestがファイル探索するディレクトリを指定する。<rootDir>は、設定ファイルのあるディレクトリを指す。
// 今回はルートのサブディレクトリである 「srcとspecs」のみがJestのアクセスするファイルとしたいので、下記のように定義する(PJ環境に合わせて適宜変える)
roots: ["<rootDir>/src/", "<rootDir>/specs/"],
// Jestが読み込む拡張子を定義
moduleFileExtensions: ['js', 'vue'],
// ファイルパスのエイリアスを作成
// 今回は、<rootDir>/src/ のエイリアスを @ に置き換える設定をしている
// (.*) にあたる部分が $1 で参照されるので、@/test.vue とすると $1 = test.vue となり、<rootDir>/src/test.vueにアクセスできる
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
// ファイルをどのモジュールでトランスパイルするかを設定する
transform: {
// .jsファイルをbabel-jestでトランスパイルする
"^.+\\.js$": "babel-jest",
// .vueファイルをvue-jestでトランスパイルする
"^.+\\.vue$": "vue-jest",
},
}
Babel設定ファイル
babel.config.js
{
"presets": ["@babel/preset-env"]
}
scriptにtestを追加
package.json
"scripts": {
"test": "jest"
}
以上でテストを実行できる
module.exports = {
// verboseをtrueにすることで、テストケースごとの結果を出力する。なので、trueを設定しておくのが良い。
// デフォルトはfalseで、テストファイルごとの結果のみの出力となる(各テストケースの結果は不明)
verbose: true,
// Jestがファイル探索するディレクトリを指定する。<rootDir>は、設定ファイルのあるディレクトリを指す。
// 今回はルートのサブディレクトリである 「srcとspecs」のみがJestのアクセスするファイルとしたいので、下記のように定義する(PJ環境に合わせて適宜変える)
roots: ["<rootDir>/src/", "<rootDir>/specs/"],
// Jestが読み込む拡張子を定義
moduleFileExtensions: ['js', 'vue'],
// ファイルパスのエイリアスを作成
// 今回は、<rootDir>/src/ のエイリアスを @ に置き換える設定をしている
// (.*) にあたる部分が $1 で参照されるので、@/test.vue とすると $1 = test.vue となり、<rootDir>/src/test.vueにアクセスできる
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
// ファイルをどのモジュールでトランスパイルするかを設定する
transform: {
// .jsファイルをbabel-jestでトランスパイルする
"^.+\\.js$": "babel-jest",
// .vueファイルをvue-jestでトランスパイルする
"^.+\\.vue$": "vue-jest",
},
}
{
"presets": ["@babel/preset-env"]
}
scriptにtestを追加
package.json
"scripts": {
"test": "jest"
}
以上でテストを実行できる
"scripts": {
"test": "jest"
}
適当にテストファイルを作成する。
test('mount a vue component', () => {
console.log("test")
})
npm run test
でテストを実行し、Jestが動けばOK
Vuetifyを使用している場合のユニットテスト
プロジェクトには、vue add vuetify
でVuetifyをインストールしたはず。
下記、Vuetifyの公式ページにしたがって、テスト環境を整えた。
セットアップファイルを作成
セットアップファイルを作成した。
import Vue from 'vue'
import vuetify from 'vuetify'
Vue.use(vuetify)
(備忘)下記、怪しいので参考程度に。。。
実際は、Vuetifyの公式ページの手順通りにユニットテストの環境構築を進めて、いざテストすると「Vuetifyのモジュールが見つからない」って怒られた。
ここで長い時間はまった。
node_moduleを確認すると、vuetifyがない。
(node_moduleにはないがアプリケーションは動く。テストだと、モジュールが見つからないと言われる)
なので、Vuetifyをアンインストールして、npm install vuetify
で再インストールして、再度テストを実行したところ、動いた。
node_moduleにも、vuetifyがあった。
たしか、最初はvue add vuetify
でvuetifyを入れた気がするがそれが原因?(うる覚え)
もう一度、vue add vuetify
で作ったプロジェクトに対してテストして、同じような現象が起こるかを確認すればいいのだが、確認していません!orz
Author And Source
この問題について(【備忘】【Vue】【Jest】Vue Test Utilsでテストするための環境を構築する), 我々は、より多くの情報をここで見つけました https://qiita.com/mstk_s/items/931a43669cd964ff182b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .