Estoy en el proceso de convertir mi proyecto de Vue 2 a 3 y también de probar la biblioteca a Vue test utils 2. Antes, los métodos de simulación funcionan como magia:
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') })Intenté convertirlo a API de composición:
export default defineComponent({ setup() { function greet(text) { sayHello(text) } function sayHello(text) { console.log(text) } return { greet, sayHello } } })y ahora las pruebas no funcionan en absoluto
expect(jest.fn()).toHaveBeenCalledWith(...expected) Expected: "hello world" Number of calls: 0¿Cómo simular funciones que llaman a otras funciones en Vue 3 + Vue test utils 2?
debe crear sus funciones de espionaje antes de que se cree la instancia del contenedor (donde usa mount o el montaje shallowMount ). Creando espías antes de crear una instancia y usar
beforeEach(() => { jest.resetAllMocks(); })para restablecer los simulacros para los siguientes casos debería funcionar.