浅安装组件时找不到v-btn

时间:2019-04-17 14:47:27

标签: vue.js jestjs vuetify.js vue-cli-3 vue-test-utils

我已经在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 |   });

我该怎么办?在尝试所有操作时,我有很多此类按钮需要测试,并且卡住了。

1 个答案:

答案 0 :(得分:0)

解决了!

我用true声明了 wrapper.find('。profile-button')的值。

应更改为:

(wrapper.find('.profile-button').exists()).toBe(true)

(wrapper.find('。profile-button')。exists())返回一个布尔值,这就是我们要声明的值。