Vueコンポーネントをもっと「効率的にテストする」
初めに
vueのテストでコンポーネントを生成する際、
- 基本的にデフォルト値を使用
- 必要な値だけ変更
という感じで簡単に生成できるよう考えました。
Vuetifyの「効率的にテストする」の以下のようにしても良いですが
「これだと結局propsData全部指定しなきゃいけないし増えたらケース毎に指定するの面倒じゃない?」
と思ったのが発端です。
やってみる
元のソースコード
「効率的にテストする」から引用
const mountFunction = options => {
return mount(CustomCard, {
localVue,
vuetify,
...options,
})
}
it('should have a custom title and match snapshot', () => {
const wrapper = mountFunction({
propsData: {
title: 'Fizzbuzz',
},
})
expect(wrapper.html()).toMatchSnapshot()
})
いじったあとのソースコード
デフォルト値を指定
// デフォルトの値を指定
const defaultOptions = {
title: 'Fizzbuzz',
text: 'hogehoge',
}
const mountFunction = (options=defaultOptions) => {
return mount(CustomCard, {
localVue,
vuetify,
propsData: Object.assign(defaultOptions, options),
})
}
it('デフォルトの値をそのまま利用する場合', () => {
const wrapper = mountFunction() // 値を気にしなくて良いテストはそのままデフォルト値を使用
expect(wrapper.html()).toMatchSnapshot()
})
it('複数のpropsの中で一つだけ変更したい場合', () => {
const wrapper = mountFunction({ title: 'BuzzFizz' }) // 必要な値だけ更新してテスト
expect(wrapper.html()).toMatchSnapshot()
})
まとめ
const mountFunction = options => {
return mount(CustomCard, {
localVue,
vuetify,
...options,
})
}
it('should have a custom title and match snapshot', () => {
const wrapper = mountFunction({
propsData: {
title: 'Fizzbuzz',
},
})
expect(wrapper.html()).toMatchSnapshot()
})
// デフォルトの値を指定
const defaultOptions = {
title: 'Fizzbuzz',
text: 'hogehoge',
}
const mountFunction = (options=defaultOptions) => {
return mount(CustomCard, {
localVue,
vuetify,
propsData: Object.assign(defaultOptions, options),
})
}
it('デフォルトの値をそのまま利用する場合', () => {
const wrapper = mountFunction() // 値を気にしなくて良いテストはそのままデフォルト値を使用
expect(wrapper.html()).toMatchSnapshot()
})
it('複数のpropsの中で一つだけ変更したい場合', () => {
const wrapper = mountFunction({ title: 'BuzzFizz' }) // 必要な値だけ更新してテスト
expect(wrapper.html()).toMatchSnapshot()
})
ただの表示確認ならmountFunction()
でいいですし
一つのプロパティに値を設定してその結果を見たいならmountFunction({ key: value })
で、そのプロパティ以外の無駄なコードを省けますし使えるかも!
とvue始めたての初心者が思いついた記事でした。
ありきたりかもしれませんが備忘録的な意味も込めて。
もっと良い方法なんかがあれば教えてください!
以上です。
Author And Source
この問題について(Vueコンポーネントをもっと「効率的にテストする」), 我々は、より多くの情報をここで見つけました https://qiita.com/knoth071211/items/15d432dfd28e51787b31著者帰属:元の著者の情報は、元の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 .