gpt4 book ai didi

javascript - 使用 Vue.js 在测试中查找数据属性

转载 作者:搜寻专家 更新时间:2023-10-30 22:17:22 27 4
gpt4 key购买 nike

尝试使用 shallowMount 找出如何找到数据属性并检查该属性是否存在于 Vue 模板中:

myVue.vue

<template>
<div>
<div data-test="apple"></div>
</div>
</template>

<script>

export default {
name: "fruit-main",
extends: registerStore(),
components: {

},
props: {

},
data() {

},
mounted() {

},
computed: {

},
methods: {

},
watch: {

}
}
</script>

spec.js(使用 Vue Test Utils 和 mocha):

it('shows an apple', () => {
let fakeStore = new Vuex.Store({ state: {} });
const apple = shallowMount(myVue, {fakeStore}),

expect(apple).to.have.length(1);
});

或者可能是这样???

myVue.vue

<template>
<div>
<div apple></div>
</div>
</template>

spec.js

it('shows an apple', () => {
const vue = shallowMount(myVue),
apple = vue.element.getAttribute('apple')

expect(apple).to.exist
// or expect(apple).to.have.length(1); - which is how you'd do it with enzyme but I'm not sure yet what getAttribute returns yet
});

但我不确定该怎么做,显然这是不对的。我是一名 enzyme 和 React 专家,试图弄清楚如何基本上使用 Vue 进行相同类型的测试。

注意:我只将 shallowMount 用于 TDD 我对 mount() 不感兴趣,我现在不打算在这篇文章中讨论这个问题。我只是在这里寻求有关 shallowMount 的帮助,以及如何为我的测试找到一个数据属性以断言。

最佳答案

使用包装器 attributes()假设数据集在包装器本身中。

即。

import FruitMain from '@components/FruitMain.vue'
import { shallowMount } from '@vue/test-utils'

describe('@components/FruitMain.vue', () => {
it('shows an apple', () => {
// We are assuming the FruitMain component receives a 'fruit' prop.
const wrapper = shallowMount(FruitMain, { propsData: { fruit: 'apple' } })

// Has the correct starting data fruit
expect(wrapper.attributes()['data-fruit']).toBe('apple')

// Has the correct fruit value when props change
// wrapper.setProps({ fruit: 'banana' })
// expect(wrapper.attributes()['data-fruit']).toBe('banana')
})
})

要搜索具有数据集的 child ,请使用 contains() .

import FruitMain from '@components/FruitMain.vue'
import { shallowMount } from '@vue/test-utils'

describe('@components/FruitMain.vue', () => {
it('shows an apple', () => {
// We are assuming the FruitMain component receives a 'fruit' prop.
const wrapper = shallowMount(FruitMain, { propsData: { fruit: 'apple' } })

// Has a data fruit
expect(wrapper.contains('[data-fruit]')).toBe(true) // or [data-fruit="apple"]
})
})

CodeSandbox Demo

关于javascript - 使用 Vue.js 在测试中查找数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51997360/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com