JESTとVUE試験ユーティリティによるVue 3:導入
ユニットテストでVueプロジェクトを作成するには時間がかかったことはありますか?
開始する前に、我々はどのような単位テストを使用する利点が表示されます.それはあなたの自信を高める!実際には、specと呼ばれるテストは、既存のコードを壊すことなく、新しい機能を追加することができます. それはプロジェクトに関連する開発者によって使用され、アプリケーションのドキュメントのような仕様を考慮することができます. あなたが生産するコードの品質は、 を改善することができるだけです
始めましょう、我々はプロジェクトを作成することから始めます、それはおよそ2分かかります.
テストのパターンを選択する
テスト・スイートは、グループ化されたテストの一種である です試験は、テスト の数を示しますスナップショットを使用すると、全体のコンポーネントが必要に応じて実行されることを確認するために使用され、それはまた、統合テストとして使用される
緑で「パス」を見ることができます.テストが失敗した場合は、“失敗”赤で取得します.
アプリを開きましょう.Spec . jsファイルので、どのように動作を理解することができます.以下のコードを説明しました.
VUEアプリケーションをDOM要素にマウントする必要があるので、Vueをマウントする必要があります.テストするファイル.
たとえば、HelloWorld上でテストを実行したい場合.Vueページ、我々はインポートする必要があります.これを行うには2つの方法があります.
マウントのように、マウントされてレンダリングされたVueコンポーネントを含むラッパーを作成しますが、スタブ付きの子コンポーネントで使用することができます.
テストを書くには、どうすればよいかを知る必要があります.テストスイート:それを行うために'記述'を使用して、 テスト:使用'テスト'または' it ' あなたのテストのゴール:「期待」は、あなたがテスト の予想であることを定めるのを許します
記述は明確でなければなりません、我々はテストされたコンポーネント名または関数名を使用します.
あなたがES 6を使いたいならば
このテストの記述を入れた後、我々は期待で使用される変数を準備します.
この時点で、いくつかの方法でプロジェクトを管理できます.コードを最初にテストします.最初にコンポーネントをコード化し、テストを追加できます. のテストの最初の、コード後:あなたは最初のテストを追加することができますので、あなたが何をするかの明確なアイデアをコードを開始することができます.さらにTDD ( Test Driven Development )をチェックします.私はこのアプローチを使用します.
まず、実装したい機能について考えなくてはなりません.このケースでは、なぜアプリにNavbarを追加を開始するには?プロセスは次のようになります. Navbarコンポーネントの のテストを作成します. Navbarコンポーネントの を作成しますアプリでそれを追加します.VEE テストを書く
テストは簡単です、我々はアプリのコンテンツを消去します.Spec . jsとNavbarコンポーネントがアプリケーションに存在するかどうかをチェックするテストを追加します.Vue
テストは失敗します、このエラーを得るように、輸入は存在しません.
コンポーネントの作成
最後のエラーは私たちに問題を教えて、私たちはコンポーネントを作成する必要があります!
我々は、アプリで戻ります.Vueページは、ナババーを追加します.ここでインポートパーツを追加したくない場合は、メインに追加できます.js
動く!別のテストで他のテストが追加されます;
開始する前に、我々はどのような単位テストを使用する利点が表示されます.
始めましょう、我々はプロジェクトを作成することから始めます、それはおよそ2分かかります.
vue create vue-3-test-unit && cd vue-3-test-unit
私が選んだ特徴はテストのパターンを選択する
あなたのテストを整理するパターンの多くを見つける.
おすすめのパターン
私は個人的に次のパターンを使用します.利点はすべてのテストがテスト/単位フォルダにあるということです.
tests/
├─ unit/
│ ├─ assets
│ ├─ components
│ ├─ js
│ ├─ router
│ ├─ store
│ ├─ views
│ ├─ App.test.js
このパターンを取得するには、次のコマンドを実行します.
mkdir tests/unit/assets
mkdir tests/unit/components
mkdir tests/unit/router
mkdir tests/unit/store
mkdir tests/unit/views
mv tests/unit/example.spec.js tests/unit/App.spec.js
その他のパターン
興味があるならば、あなたはパターンの他の何かの下記を見つけます:
src/
├─ components/
│ ├─ navbar.js
│ ├─ navbar.style.js
│ └─ navbar.test.js
src/
├─ components/
├─ __tests__/
│ │ └─ navbar.test.js
│ └─ navbar.js
テスト/仕様構文
次のコマンドを試してみましょう
npm run test:unit
下記のように、テストの結果が表示されます.
解説
tests/
├─ unit/
│ ├─ assets
│ ├─ components
│ ├─ js
│ ├─ router
│ ├─ store
│ ├─ views
│ ├─ App.test.js
mkdir tests/unit/assets
mkdir tests/unit/components
mkdir tests/unit/router
mkdir tests/unit/store
mkdir tests/unit/views
mv tests/unit/example.spec.js tests/unit/App.spec.js
src/
├─ components/
│ ├─ navbar.js
│ ├─ navbar.style.js
│ └─ navbar.test.js
src/
├─ components/
├─ __tests__/
│ │ └─ navbar.test.js
│ └─ navbar.js
次のコマンドを試してみましょう
npm run test:unit
下記のように、テストの結果が表示されます.解説
緑で「パス」を見ることができます.テストが失敗した場合は、“失敗”赤で取得します.
テストの仕方を理解する
アプリを開きましょう.Spec . jsファイルので、どのように動作を理解することができます.以下のコードを説明しました.
import { shallowMount } from '@vue/test-utils'
import HelloWorld from '@/components/HelloWorld.vue'
describe('HelloWorld.vue', () => {
it('renders props.msg when passed', () => {
const msg = 'new message'
const wrapper = shallowMount(HelloWorld, {
props: { msg }
})
expect(wrapper.text()).toMatch(msg)
})
})
なぜ我々は輸入を行う必要がありますか?
VUEアプリケーションをDOM要素にマウントする必要があるので、Vueをマウントする必要があります.テストするファイル.
たとえば、HelloWorld上でテストを実行したい場合.Vueページ、我々はインポートする必要があります.これを行うには2つの方法があります.
マウント
import { mount } from '@vue/test-utils'
import HelloWorld from '@/components/HelloWorld.vue'
浅瀬
マウントのように、マウントされてレンダリングされたVueコンポーネントを含むラッパーを作成しますが、スタブ付きの子コンポーネントで使用することができます.
import { shallowMount } from '@vue/test-utils'
import HelloWorld from '@/components/HelloWorld.vue'
説明したテストの構文
テストを書くには、どうすればよいかを知る必要があります.
記述
記述は明確でなければなりません、我々はテストされたコンポーネント名または関数名を使用します.
あなたがES 6を使いたいならば
describe('HelloWorld.vue', () => {
})
ES 6なしで:describe('HelloWorld.vue', function() {
})
期待する
このテストの記述を入れた後、我々は期待で使用される変数を準備します.
it('renders props.msg when passed', () => {
const msg = 'new message'
const wrapper = shallowMount(HelloWorld, {
props: { msg }
})
expect(wrapper.text()).toMatch(msg)
})
このテストはHelloWorldのDOMを意味します.Vueページには、小道具' msg 'によって'新しいメッセージ'を含んでいるテキストがなければなりません.最初のテストを書く
この時点で、いくつかの方法でプロジェクトを管理できます.
テストから始める
まず、実装したい機能について考えなくてはなりません.このケースでは、なぜアプリにNavbarを追加を開始するには?プロセスは次のようになります.
テストは簡単です、我々はアプリのコンテンツを消去します.Spec . jsとNavbarコンポーネントがアプリケーションに存在するかどうかをチェックするテストを追加します.Vue
import { shallowMount } from '@vue/test-utils'
import Navbar from '../../src/components/Navbar.vue'
import App from '../../src/App.vue'
import router from '../../src/router/index.js'
describe('App.vue', () => {
it('Navbar component\'s exist', async () => {
router.push('/')
await router.isReady()
const wrapper = shallowMount(App, {
global: {
plugins: [router]
}
})
expect(wrapper.findComponent(Navbar).exists()).toBe(true)
})
})
テストを起動テストは失敗します、このエラーを得るように、輸入は存在しません.
コンポーネントの作成
最後のエラーは私たちに問題を教えて、私たちはコンポーネントを作成する必要があります!
touch src/components/Navbar.vue
あなたが自分でNavbarを作りたくないならば、ちょっと以下のコードを加えてください.<template>
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</div>
</template>
<script>
export default {
name: 'Navbar',
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
#nav {
padding: 30px;
}
#nav a {
font-weight: bold;
color: #2c3e50;
}
#nav a.router-link-exact-active {
color: #42b983;
}
</style>
アプリケーションにコンポーネントを追加します.Vue我々は、アプリで戻ります.Vueページは、ナババーを追加します.ここでインポートパーツを追加したくない場合は、メインに追加できます.js
<template>
<navbar />
<router-view />
</template>
<script>
import Navbar from '@/components/Navbar.vue'
export default {
name: 'App',
components: {
Navbar
},
}
</script>
テストを起動npm run test:unit
動く!別のテストで他のテストが追加されます;
Reference
この問題について(JESTとVUE試験ユーティリティによるVue 3:導入), 我々は、より多くの情報をここで見つけました https://dev.to/songta17/vue-3-with-jest-and-vue-tests-utils-introduction-5h5iテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol