Я хочу проверить конкретное имя выброса называется? - PullRequest
0 голосов
/ 29 июня 2018

I кодовый тест для vue с karma. Я могу проверить emit is trigger(called) по приведенному ниже коду!

test.spec.js

let stub = sinon.spy(vm, "$emit")
vm.save()
expect(stub.called).toBeTruthy()

test.vue

methods: {
  save() {
    this.$emit('edit-field', true);
    this.close()
  },
  close() {}
}

Но я хочу проверить specific emit триггер, я пробовал, как показано ниже, но не работает ...

let stub = sinon.spy(vm, "$emit('edit-field')") //getting error 
stub = sinon.spy(vm, "$emit::edit-field") //getting error also
vm.save()
expect(stub.called).toBeTruthy()

Ответы [ 2 ]

0 голосов
/ 10 июля 2018
  • проверить имя выброса

it(' -> edit function', () => {
    let stub = sinon.stub(vm, '$emit')
    stub.callsFake(name => {
     expect(name).toBe('edit-field')
    })
    vm.close()
  })
0 голосов
/ 29 июня 2018

С официальным @vue/test-utils вы можете сделать что-то вроде этого:

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

const wrapper = shallowMount(Component)
wrapper.vm.save();
expect(wrapper.emitted()['edit-field'].length).toBe(1);
expect(wrapper.emitted()['edit-field'][0]).toEqual([true]);

Из документов .

...