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

时间:2018-12-21 12:56:51

标签: 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中。我该如何工作?

1 个答案:

答案 0 :(得分: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')
  })
})

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