【问题标题】:How to unit test a typescript Vue Component that uses vuex-class如何对使用 vuex-class 的 typescript Vue 组件进行单元测试
【发布时间】:2020-04-02 08:32:31
【问题描述】:
<script lang="ts">
    import {Component, Vue} from 'vue-property-decorator';
    import {Action, Getter, namespace} from 'vuex-class';
    import {User} from '@/types/userTypes';

    const userModule = namespace('user');

    @Component({
        name: 'Header'
    })

    export default class Header extends Vue {
        data: any;

        @userModule.Getter user!: User;

    }
</script>

上面的代码是一个简单的 Header 组件,它使用 Getter/命名空间来显示用户数据。

问题是如何模拟namespace('user', Getter)

运行我得到的测试:

[Vue warn]: Error in render: "TypeError: Cannot read property '_modulesNamespaceMap' of undefined"

如果你有如何模拟这个的示例,请分享。

【问题讨论】:

    标签: typescript vue.js testing jestjs vuex


    【解决方案1】:
    import {createLocalVue, shallowMount} from '@vue/test-utils';
    import Vuex from 'vuex';
    import Header from '@/components/Header.vue';
    
    const localVue = createLocalVue();
    localVue.use(Vuex);
    
    const getters = {
        user: jest.fn()
    };
    
    const store = new Vuex.Store({
        modules: {
            user: {
                namespaced: true,
                getters
            }
        }
    });
    
    describe('Header.vue', () => {
        it('Instantiate component', () => {
            const wrapper = shallowMount(Header, {
                store,
                localVue
            });
            expect(wrapper.isVueInstance()).toBeTruthy();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2020-08-09
      • 2018-07-26
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 2020-09-22
      • 2020-03-14
      • 2017-07-20
      • 1970-01-01
      相关资源
      最近更新 更多