我已经在vuetify中创建了一个项目,现在尝试使用jest对它进行单元测试。 我有一个使用v-btn创建的按钮,该按钮可切换布尔变量的值。
要检查按钮是否被单击,我尝试使用我给v-btn的类名来获取按钮,但它不起作用
我尝试使用浅装和普通装。我试图捕获标签(v-btn)本身,但是没有用
some.vue
<template>
<div>
<v-btn class="profile-button" @click="isProfile = !isProfile">Profile</v-btn>
<v-btn icon color="#fff" class="expand" small fab absolute right @click="mini = !mini">
<v-icon color="#fcbc00">chevron_right</v-icon>
</v-btn>
</div>
</template>
<script>
export default {
data() {
return {
isProfile: true,
mini: true
}
}
}
</script>
some.spec.js
import { shallowMount } from '@vue/test-utils';
import Profile from '@/components/Profile.vue';
import Vue from 'vue'
import Vuetify from 'vuetify'
describe('Profile.vue', () => {
Vue.use(Vuetify)
it('Profile is a vue instance', () => {
const wrapper = shallowMount(Profile);
expect(wrapper.isVueInstance()).toBeTruthy()
});
it('Profile Button exists', () => {
const wrapper = shallowMount(Profile);
expect(wrapper.contains('.profile-button')).toBe(true)
});
it('Profile Button is clicked', () => {
const wrapper = shallowMount(Profile);
expect(wrapper.contains('.profile-button')).trigger('click')
});
it('Has an expand button', () => {
const wrapper = shallowMount(Profile)
wrapper.find('expand').trigger('click')
})
});
所有测试均应通过。但是我收到以下错误:
expect(received).toBe(expected) // Object.is equality
Expected: true
Received: false
19 |
20 | it('Profile Button exists', () => {
> 21 | expect(wrapper.contains('.profile-button')).toBe(true)
| ^
22 | })
[vue-test-utils]: find did not return expand, cannot call trigger()
on empty Wrapper
16 | it('Has an expand button', () => {
17 | const wrapper = shallowMount(SideDrawer)
> 18 | wrapper.find('expand').trigger('click')
| ^
19 | })
20 | });
我该怎么办?在尝试所有操作时,我有很多此类按钮需要测试,并且卡住了。
答案 0 :(得分:0)
解决了!
我用true声明了 wrapper.find('。profile-button')的值。
应更改为:
(wrapper.find('.profile-button').exists()).toBe(true)
(wrapper.find('。profile-button')。exists())返回一个布尔值,这就是我们要声明的值。