Estoy tratando de probar un evento emitido por un campo de entrada, que tiene un método de actualización de rebote.
Sin rebote, pasó la prueba, sin problemas.
Aquí hay una parte del código.
import { render } from '@testing-library/vue'; import userEvent from '@testing-library/user-event'; import debounce from 'lodash.debounce'; const template = { template: '<input v-model="searchText" @input="update" type="search" />', data() { return { searchText: '', }; }, methods: { update: debounce(function (e) { this.searchText = e.target.value; if (this.searchText.length >= 3) this.$emit('update-items', this.searchText); }, 300), }, }; it('should emit [update-items] event if the query length typed on search input field is equal os greater than three', async () => { // * Arrange // * Act const { container, emitted } = await render(template); const el = container.querySelector('input'); await userEvent.type(el, 'abcd'); // * Assert expect(emitted()).toHaveProperty('update-items'); // ! FAIL });El original está aquí: https://gist.github.com/vicainelli/cf614ef7d7967684ebab6cae8290033e
Me di cuenta, solo tenía que burlarme de la dependencia de lodash.debounce
jest.mock('lodash.debounce', () => jest.fn((fn) => fn));