如何模拟组件方法?

How to mock a component method?

我只是想查明是否在存储操作后调用了组件方法,但出现此错误:

expect(jest.fn())[.not].toHaveBeenCalled()

jest.fn() value must be a mock function or spy.
Received:
  function: [Function bound mockConstructor]

这是我的单元测试:

describe('MyComponent.spec.js', () => {
  let methods = {
    setLocation: jest.fn()
    // more methods...
  }

  it('calls setLocation on undo/redo', () => {
    let wrapper = mount(MyComponent, {
      store,
      localVue,
      methods
    })

    store.dispatch('doUndo')
    expect(wrapper.vm.setLocation).toHaveBeenCalled()
  })
})

不确定这是否是一个好的做法,但我使用的是实际商店和本地 Vue 实例。

要验证模拟方法,请使用实际的模拟变量本身(不是通过 wrapper):

expect(methods.setLocation).toHaveBeenCalled()