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 trigger

Aciona uma evento assincronamente no nó do DOM do Wrapper (envolvedor).

O método trigger recebe um objeto options opcional. As propriedades dentro do objeto options são adicionadas ao evento. O método trigger retorna uma promessa (Promise), a qual quando resolvida, garante que o componente seja atualizado. O méotodo trigger apenas funciona com eventos nativos do DOM. Para emitir um evento personalizado, use o wrapper.vm.$emit('myCustomEvent')

  • Argumentos:

    • {string} eventType obrigatório
    • {Object} options opcional
  • Exemplo:

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

test('trigger demo', async () => {
  const clickHandler = sinon.stub()
  const wrapper = mount(Foo, {
    propsData: { clickHandler }
  })

  await wrapper.trigger('click')

  await wrapper.trigger('click', {
    button: 0
  })

  await wrapper.trigger('click', {
    ctrlKey: true // Para testes de manipuladores de @click.ctrl
  })

  expect(clickHandler.called).toBe(true)
})

TIP

Quando estiver usando o trigger('focus') com o jsdom v16.4.0, então o acima você de usar a opção attachTo quando estiver montando o componente. Isto porque uma resolução de bug no jsdom v16.4.0 mudou o el.focus() para não fazer nada em elementos que estão disconectados do DOM.

  • Configurando um alvo do evento:

Nos bastidores, o método trigger cria um objeto Event e despacha o evento no elemento do Wrapper (envolvedor).

Não é possível editar o valor do target de um objeto Event, assim você não pode definir o target dentro do objeto options.

Para adicionar um atributo ao target, você precisa definir o valor do elemento do Wrapper (envolvedor) antes da chamada do método trigger. Você pode fazer isso com a propriedade element.

const input = wrapper.find('input')
input.element.value = 100
input.trigger('click')