unit-testing - 如何在 vue-test-utils 和 jest 中使用动态导入测试组件

标签 unit-testing vue.js jestjs importerror vue-test-utils

我正在测试一个动态导入子组件的组件。这是该部分的屏幕截图

在 Parent.vue 中

Inside Parent.vue

错误

enter image description here

它适用于正常导入但不适用于动态异步导入。谁能帮助说明如何配置 Jest 以支持异步组件导入?

最佳答案

如果问题仍然存在(我没有找到任何直接答案)尝试“ stub ”应该导入的组件。

组件

<template>
    <div>
        <dynamic-imported-component-one id="componentOne"></dynamic-imported-component-one>
        <dynamic-imported-component-two id="componentTwo"></dynamic-imported-component-two>
    </div>
</template>
<script>
    const ComponentOne = resolve => import(/* webpackChunkName: "views/view-ComponentOne-vue" */ '../Components/ComponentOne.vue');
    const ComponentTwo = resolve => import(/* webpackChunkName: "views/view-ComponentTwo-vue" */ '../Components/ComponentTwo.vue');

    export default {
        components: {
            'dynamicImportedComponentOne': ComponentOne,
            'dynamicImportedComponentTwo': ComponentTwo }
    }
</script>

测试:

describe('SomeComponent.vue', () => {

    const stubs = {
        dynamicImportedComponentOne: '<h3>Stubbed component one</h3>',
        dynamicImportedComponentTwo: '<h3>Stubbed component one</h3>'
    }

    it('test for SomeComponent', () => {
        const wrapper = shallowMount(SomeComponent, { stubs });

        expect(wrapper.find('#componentOne').exists()).toBeTruthy();
        expect(wrapper.find('#componentTwo').exists()).toBeTruthy();
    });
});

您无法测试 ComponentOne/ComponentTwo 内容,但无论如何都应该在单独的测试中完成。

关于unit-testing - 如何在 vue-test-utils 和 jest 中使用动态导入测试组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52673260/

相关文章:

javascript - 如何模拟由 ember 的 IoC 注入(inject)的属性

Javascript - Vuejs - 自动整页平滑滚动

vue.js - 如何传递给 Vue-JS 几个组件?

javascript - 禁用 Jest setTimeout 模拟

react-router - 测试时无法使用 MemoryRouter 导航到路径

node.js - 带有 fetch-mock 的 Jest 生成错误 : TypeError: Cannot read property 'prototype' of undefined when using on nodejs

javascript - 为什么在 React 单元测试中模拟事件时未定义,使用 sinon.spy 模拟函数和 enzyme.shallow 渲染 React Component?

c# - 起订量 不支持的表达

java - EasyMock:无效方法

javascript - 如何使用 Cypress 在 Vuetify <v-slider> 上选择特定点