You’re browsing the documentation for Vue Test Utils for Vue v2.x and earlier.

To read docs for Vue Test Utils for Vue 3, click here.

O método emitted

Retorna um objeto contento eventos personalizados emitidos pelo Wrapper vm.

  • Retorna: { [name: string]: Array<Array<any>> }

  • Exemplo:

import { mount } from '@vue/test-utils'

test('emit demo', async () => {
  const wrapper = mount(Component)

  wrapper.vm.$emit('foo')
  wrapper.vm.$emit('foo', 123)

  await wrapper.vm.$nextTick() // Espera até que $emits ter sido manipulado

  /*
  wrapper.emitted() retorna o seguinte objeto:
  {
    foo: [[], [123]]
  }
  */

  // afirma que o evento tem sido emitido
  expect(wrapper.emitted().foo).toBeTruthy()

  // afirma que o evento contabiliza
  expect(wrapper.emitted().foo.length).toBe(2)

  // afirma que evento carrega
  expect(wrapper.emitted().foo[1]).toEqual([123])
})

Você também pode escrever o que está acima como o seguinte:

// afirma que o evento tem sido emitido
expect(wrapper.emitted('foo')).toBeTruthy()

// afirma que o evento contabiliza
expect(wrapper.emitted('foo').length).toBe(2)

// afirma que evento carrega
expect(wrapper.emitted('foo')[1]).toEqual([123])

O método .emitted() retorna o mesmo objeto toda vez que ele for chamado, não um novo, e assim o objeto atualizará sempre que novos eventos forem disparados:

const emitted = wrapper.emitted()

expect(emitted.foo.length).toBe(1)

// faça alguma coisa para fazer `wrapper` emitir o evento "foo"

expect(emitted.foo.length).toBe(2)