javascript 如何使用Vue Test Utils 2模拟Vue 3中的函数/方法?

rdrgkggo  于 2023-02-07  发布在  Java
关注(0)|答案(2)|浏览(151)

我正在将我的项目从Vue 2转换为Vue 3,并将测试库转换为Vue test utils 2。以前,模拟方法像魔术一样工作:

export default {
  methods: {
    greet(text) {
      sayHello('hello world')
    },
    sayHello(text) {
      console.log(text)
    }
  }
}
test('should sample', async () => {
  const spy = jest.spyOn(wrapper.vm, 'sayHello')
  wrapper.vm.greet('hello world')
  expect(spy).toHaveBeenCalledWith('hello world')
})

我试着把它转换成合成API:

export default defineComponent({
  setup() {
    function greet(text) {
      sayHello(text)
    }

    function sayHello(text) {
      console.log(text)
    }

    return {
      greet,
      sayHello
    }
  }
})

现在测试根本不起作用

expect(jest.fn()).toHaveBeenCalledWith(...expected)

Expected: "hello world"

Number of calls: 0

如何模拟在Vue 3 + Vue测试工具2中调用其他函数的函数?

jvlzgdj9

jvlzgdj91#

您应该在创建 Package 器示例之前创建您的spy函数(此处使用mountshallowMount)。

beforeEach(() => {
  jest.resetAllMocks();
})

为了在以下情况下重置模拟,应该可以做到这一点。

izkcnapc

izkcnapc2#

阅读此文章:https://github.com/vuejs/vue-test-utils/issues/1951#issuecomment-1019091217
lmiller1990说我们不可能修改值 设置内部。

相关问题