vue.js - Jest + Nuxt + Nuxt-Fire 在测试套件中失败

标签 vue.js vuejs2 jestjs nuxt.js

我正在使用 Nuxt 和 Nuxt-Fire (https://github.com/lupas/nuxt-fire)

当我启动测试时,我收到此错误 [Vue warn]: Error in config.errorHandler: "TypeError: Cannot read property 'ref' of undefined"
发生这种情况是因为我的应用程序中的这个部分

mounted() {
    this.initiate(window.instaroomId)

    let connected = this.$fireDb.ref(".info/connected")
    this.getConnection(connected)
},

看起来 this.$fireDb 没有被调用。该模块通常在 nuxt.config.js 中加载。我怎样才能使这项工作?

最佳答案

如果要测试,那this.$fireDb.ref(".info/connected")被称为你可以像这样模拟它:

import { shallowMount } from '@vue/test-utils'
import SomeComponent from '@/components/SomeComponent/SomeComponent.vue'

let wrapper

describe('SomeComponent.vue Test', () => {
  beforeEach(() => {
    wrapper = shallowMount(SomeComponent, {
      mocks: {
        $fireDb: {
          ref: jest.fn()
        }
      }
    })
  })
  it('$fireDb.ref was called', () => {
    expect(wrapper.vm.$fireDb.ref).toBeCalled()
    expect(wrapper.vm.$fireDb.ref).toBeCalledWith('.info/connected')
  })
})

或者,如果您希望测试通过 created() Hook 并测试您可以模拟的另一个功能 $fireDb.ref没有测试它被调用。

关于vue.js - Jest + Nuxt + Nuxt-Fire 在测试套件中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53885177/

相关文章:

javascript - 如何使用 BootstrapVue 将值格式化为货币?

javascript - 构建后如何在 Vue.js 项目中存储 Firebase 凭据 (env_var)

docker - Nginx 405当另一个站点重定向到我的vue应用程序时不允许

javascript - Vue 选择的 Prop 不适用于 v-model

javascript - 使用来自其他 Vue 实例的变量并交叉引用它们

javascript - 使用 jest 和 supertest 使用 async/await 在 Javascript 中测试数据库插入

vue.js - 带有 CodeMirror 的 Quasar 对话框

vue.js - vue 重新加载子组件

javascript - 如何在单元测试中用 Jest 模拟多个不同的数据库调用?

javascript - 使用 tsc 转译后, Node 无法找到具有非相对路径的所需模块