如何模拟组件方法?

Posted

技术标签:

【中文标题】如何模拟组件方法?【英文标题】:How to mock a component method? 【发布时间】:2019-09-08 16:31:52 【问题描述】:

我只是想找出在存储操作之后是否调用了组件方法,但我收到了这个错误:

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 实例。

【问题讨论】:

【参考方案1】:

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

expect(methods.setLocation).toHaveBeenCalled()

【讨论】:

以上是关于如何模拟组件方法?的主要内容,如果未能解决你的问题,请参考以下文章

测试 Vue 组件 - 模拟状态和方法

Spring JUnit:如何在自动装配组件中模拟自动装配组件

如何模拟被 vue 指令触发的方法?

Angular如何测试组件方法?

如何在反应组件的孩子中模拟 e.preventDefault

测试组件时如何模拟管道