javascript - 如何模拟组件方法?

标签 javascript vue.js vuejs2 jestjs vue-test-utils

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

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()

Edit Verifying mocked method is called in Vue

关于javascript - 如何模拟组件方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55744295/

相关文章:

java - 如何根据数据库文本区域 'height'更改表格背景?

javascript - 具有动态项槽的 vuetify 数据表格式列

javascript - 在方法中过滤基于数组的对象的属性

javascript - 选择 2 个标记移动到上一行

javascript - 使用 Javascript/Vue.Js 合并数组内的数组

javascript - 删除数组内的特定元素(对象)

javascript - 根据值更改 <td> <i> CSS

javascript - Webpack2 + Typescript2 动态导入json失败

javascript - Vue.Js,如何在 v-for 中使用动态颜色和类

vuejs2 - Vue.js 2/Vuex - 如何从具有命名空间属性 :true without mapGetters? 的模块调用 getter