vue-test-utils, как использовать параметры триггера - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу проверить el-button, может ли он измениться на правильный вид на $router, но я не совсем понимаю, поддерживается ли trigger, потому что я нахожу это в его документе

Метод trigger принимает объект параметров optional.Свойства в объекте параметров добавляются в событие.

Обратите внимание, что цель не может быть добавлена ​​в объект options.

const wrapper = mount(MyButton)
wrapper.trigger('click', { 
    button: 0
})

, но не удалось, и я получил эту информацию

TypeError: Невозможно установить тип свойства [объект Event], который имеет только получатель

  65 |     // expect(mockFn).toBeCalled
  66 |     // expect(mockFn).toBeCalledTimes(1)
  67 |     wrapper.find(ElementUI.Button).trigger('click', {
     |                                    ^
  68 |       id: 1,
  69 |       type: 'view'
  70 |     })

vue file

<el-button
    plain
    type="primary"
    @click="changeView(-1, 'edit')">
    newPicture
</el-button>

js

changeView(id, type) {
    if (type === 'view') {
       this.$router.push({ path: './detail', query: { id, type }})
     } else if (type === 'edit') {
       this.$router.push({ path: './edit', query: { id, type }})
     }
},

И я хочу написать тестовый файл для этой кнопки

   ...
    it('add button click', () => {
        const mockFn = jest.fn()
        wrapper.setMethods({
            changeView: mockFn
        })
        wrapper.find(ElementUI.Button).trigger('click', {
            id: 1,
            type: 'view'
        })
        wrapper.update()
        expect(mockFn).toBeCalled
        console.log(wrapper.vm.$route.path)
   })
  ...

Как я могу это исправить?

1 Ответ

0 голосов
/ 23 ноября 2018

параметры, которые вы передаете, - свойства события js $.вот их список: https://www.w3schools.com/jsref/obj_event.asp

, когда вы запускаете это событие щелчка, будет вызываться changeView с параметрами, которые вы ему передали (-1 и 'edit').они не являются свойствами события, и вы не передаете их как параметры.так ваш тест будет выглядеть так:

  it('add button click', () => {
        const mockFn = jest.fn()
        wrapper.setMethods({
            changeView: mockFn
        })
        wrapper.find(ElementUI.Button).trigger('click');
        wrapper.update();
        expect(mockFn).toBeCalledWith(-1,'edit');
   })
...