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

Maa*_*ers 6 vue.js jestjs vuejs2 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)
},
Run Code Online (Sandbox Code Playgroud)

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

Edu*_*rdo 0

如果你想测试,那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')
  })
})

Run Code Online (Sandbox Code Playgroud)

或者,如果您希望测试只是通过created()钩子并测试另一个功能,您可以只模拟$fireDb.ref而不测试它被调用。