Тестирование с помощью крюка `Created` с помощью` vue-test-utils` и `jest` - PullRequest
0 голосов
/ 09 мая 2019

У меня есть такая страница Vue:

<template>
</template>

<script>
created(){
    this.doSomething();
}

methods: {
    doSomething() {
        .....
    }
}

</script>

Теперь мы хотим протестировать этот созданный хук и проверить, что метод doSomething () вызывается.

Попробовал вот так, шутка также импортируется в package.json

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

const localVue = createLocalVue();

import Xyx from '/Xyx.vue';

const init = () => {
  wrapper = shallowMount(Xyx, { localVue });
  cmp = wrapper.vm;
};

describe('#created', () => {
  it('#doSomething', () => {
    init();
    wrapper.setMethods({
      doSomething: jest.fn(),
    })
    expect(cmp.doSomething).toHaveBeenCalled();
  });
});

Могу ли я выполнить тестовый блок этого созданного хука?

1 Ответ

0 голосов
/ 09 мая 2019

Поскольку ваш метод вызывается на created, он запускается до того, как вы установите макет. Поэтому ваш тест не пройден.
Вы должны заменить метод на макет при инициализации (в вашем случае на shallowMount):

describe('Xyz', () => {
  it('should call doSomething() when created', () => {
    const doSomething = jest.fn()
    wrapper = shallowMount(Xyz, {
      localvue,
      methods: { doSomething }
    });
    expect(wrapper.vm.doSomething).toHaveBeenCalled();
  });
});

Sidenote: вы не декларируете cmp. В начале теста у вас должно быть let cmp;


Очень похожая дискуссия здесь . Над связанным комментарием есть метод для имитации свойств большинства хуков жизненного цикла компонента Vue.

...