Uncaught TypeError: Cannot read property 'firstname' of undefined. on loading a component that has an inner component

Uncaught TypeError: Cannot read property 'firstname' of undefined. on loading a component that has an inner component

create.vue

<template>
  <div class="content">
    <base-input type="text" id="firstname" v-model="firstname"/>
  </div>
</template>

<script> 
import BaseInput from 'BaseInput.vue'
export default {
    data () {
        return {
            firstname: ''
        }   
    }
}   
</script>

create.spec.js

import { shallowMount, createLocalVue } from '@vue/test-utils'
import Create from '/Create.vue'
import VueI18n from 'vue-i18n'

const wrapper = shallowMount(Create)
const vm = wrapper.vm
console.log(vm)

如您所见,加载模板时使用的是shallow Mount。 它抛出错误,

Uncaught TypeError: Cannot read property 'firstname' of undefined at webpack:///node_modules/@vue/test-utils/dist/vue-test-utils.js:5652:0 <- index.6fc62f9fc7f0f4a43161.js:9693

您需要将 BaseInput 组件添加到导出默认值。现在 vue 不知道 BaseInput 是什么(info, if you are using such as Babel or Webpack) . I also changed the data line because there need to be a : after data and function before the () (example)。如果你这样做它应该工作:

<script> 
import BaseInput from 'BaseInput.vue'
export default {
    components: {
       BaseInput 
    }
    data: function() {
        return {
            firstname: ''
        }   
    }
}   
</script>