使用Jest在Vue2中进行单元测试

7fyelxc5  于 2023-04-18  发布在  Jest
关注(0)|答案(1)|浏览(307)

对于一个学校项目,我们必须在Vue 2代码库中编写一些单元测试。我从未使用过Vue 2或Jest,但我熟悉Javascript。
我想开始创建一个非常简单的单元测试,看看它是如何工作的。

import { shallowMount } from "@vue/test-utils";
import Login from "@/components/authentication/Login.vue";

describe("Login.vue", () => {
    it("renders props.msg when passed", () => {
        const msg = "new message";
        const wrapper = shallowMount(Login, {
        propsData: { msg }
        });
        expect(wrapper.text()).toMatch(msg);
    });
});

但是,我在运行测试时得到这个错误;

Cannot read properties of undefined (reading 'dispatch')
TypeError: Cannot read properties of undefined (reading 'dispatch')

ShallowMount似乎有问题,有同样错误的人在vuex商店有问题,但这似乎不是我的问题。
谢谢你!

8zzbczxx

8zzbczxx1#

  • dispatch* 通常与Vuex store操作相关。您需要将Vuex和您的store添加到挂载的组件中。如果您使用Vue 2.x在其上安装Vuex,则可以使用 createLocalVue
import { shallowMount, createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'

const localVue = createLocalVue()
localVue.use(Vuex)

describe('Login', () => {
    const store = new Vuex.Store({
        actions: {
            // any actions or getters you access in Login.vue
        },
    })

    it("renders with message", () => {
        const wrapper = shallowMount(Login, {
            localVue,
            store,
            propsData: { msg: 'Hello' }
        })
        
        // ...
    })
})

相关问题