带Vue的Mocha:分辨率方法过于规范

时间:2018-04-24 09:52:10

标签: javascript unit-testing vuejs2 mocha vue-resource

这是我的测试:

describe('Documentation Component', () => {
  it('renders a vue instance', (done) => {
    expect(shallow(Documentation).isVueInstance()).toBe(true)
    done()
  })

  it('Gets documentation', async (done) => {
    let wrapper = shallow(Documentation)

    await flushPromises()
    expect(wrapper.vm.$data.documentation).toBe('')
    done()
  })
})

我按照Vue.js文档中的指南操作,但我无法使用它。我需要等待文档的承诺:

mounted () {
    // --------------------------------------
    this.$http.get(Config.urls.documentation).then(
      (response) => {
        this.documentation = response.body
      },
      (errorResponse) => {
        EventBridge.$emit('request.error', errorResponse)
        this.documentation = ''
      }
    )
  }

问题是,如果我使用“完成”功能会出现此错误,如果没有它,它会给出:

Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called;

我不确定我需要做什么,只是按照文档进行操作。 :(

1 个答案:

答案 0 :(得分:1)

使用asyncdone参数,不要同时使用它们。

由于您已拨打done(),因此应删除async。所以这一行:

it('Gets documentation', async (done) => {

应该是:

it('Gets documentation', (done) => {

如果您想等待承诺,请使用其他替代方案。移除done并仅使用async

it('Gets documentation', async () => {
    let wrapper = shallow(Documentation)

    await flushPromises()
    expect(wrapper.vm.$data.documentation).toBe('')
})