使用b按钮“至”的单元测试vue路由

我有一个组件,其中包含来自Vue Bootstrap的b按钮组件。在单元测试中,我想检查一下,当我单击组件中的那个按钮时,是否路由到我传递给b-button的“ to”道具中指定的url。

我的问题是单元测试中未触发路由。或其中的b按钮/路由器链接未使用我的路由器实例。

我该如何测试?我什至需要吗?我已经简化了示例-我知道b按钮自己的单元测试涵盖了“ to”功能,但是我想测试是否向其传递了正确的url。

演示组件

<template>
    <b-card
        header="Button demo"
    >
        <b-button
            class="test"
            v-bind:to="toPath"
        >Test</b-button>
    </b-card>
</template>

<script>
export default {

    name: 'ButtonDemo',data(){
        return {
            toPath: '/expected/path'
        }
    }

}
</script>

单元测试

import { mount,createLocalVue } from '@vue/test-utils'
import ButtonDemo from '@/path/to/ButtonDemo'
import BootstrapVue from 'bootstrap-vue'
import Vuex from 'vuex'
import VueRouter from 'vue-router'

const localVue = createLocalVue()

localVue.use(VueRouter)
const router = new VueRouter()

localVue.use(BootstrapVue)

describe('List',() => {

    let $wrapper

    test('Clicking "new" takes you to the create flow',async () => {

        $wrapper = mount(ButtonDemo,{ localVue,router })

        $wrapper.find('.test').trigger('click')

        expect($wrapper.vm.$route.path).toBe('/expected/path')

    })

})
likedong131313 回答:使用b按钮“至”的单元测试vue路由

只需测试to上的b-button道具集是期望值即可。

let button = $wrapper.find('.test')
expect(button.props('to')).toBe('/expected/path')

正如您所说,b-button组件的单元测试应该已经涵盖了路由到给定路径的测试。

侧面说明:请考虑在单元测试中使用shallowMount代替mount

本文链接:https://www.f2er.com/3027510.html

大家都在问