将 Jest 与 Nuxt 组件一起使用时无法读取未定义的属性 $loading

Posted

技术标签:

【中文标题】将 Jest 与 Nuxt 组件一起使用时无法读取未定义的属性 $loading【英文标题】:Cannot read property $loading of undefined when using Jest with Nuxt component 【发布时间】:2019-07-27 06:11:41 【问题描述】:

当我尝试使用 nuxt 和 jest 测试我的一个组件时,我收到以下错误:

Cannot read property '$loading' of undefined

这是由我的组件中的以下代码行引起的

this.$nuxt.$loading.start()

在我的组件上运行测试时如何防止出现此错误?

测试文件如下所示:

import  mount  from '@vue/test-utils'
import Converter from '@/components/Converter.vue'

describe('Converter', () => 
  test('is a Vue instance', () => 
    const wrapper = mount(Converter)
    expect(wrapper.isVueInstance()).toBeTruthy()
  )
)

【问题讨论】:

你可以模拟一下 Jest 在没有 Nuxt 附加实例属性的情况下安装您的组件。你需要嘲笑这个。您可以在安装组件时在本地执行此操作,或者如果您大量使用它,您可以创建全局模拟(但我不这么认为)。模拟在 vue-test-utils 文档中有很好的描述。 【参考方案1】:

我找到了解决方案。解决方案是像这样模拟 nuxt:

const wrapper = mount(Converter, 
  mocks: 
    $nuxt: 
      $loading: 
        start: () => 
      
    
  
)

【讨论】:

以上是关于将 Jest 与 Nuxt 组件一起使用时无法读取未定义的属性 $loading的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jest 在 Nuxt 中测试组件时如何添加/模拟 Nuxt Auth 库

当 Flickity 使用轮播渲染子组件时,Nuxt 应用程序抛出“无法读取未定义的属性”

无法使用 nuxt 和 jest 模拟服务

在 Nuxt JS 中导入 SVG 时,Jest 中出现“[Vue 警告]:无效的组件定义”

使用 jest 测试 nuxt.js 应用程序时访问 `process.env` 属性

将 React/Enzyme/Jest 与 Nextjs 一起使用时是不是可以获得整页 html?