vue.js test: unit w test-utils & Jest: [vue-test-utils]: wrapper.destroy () может быть вызван только для экземпляра Vue - PullRequest
0 голосов
/ 05 сентября 2018

Чтобы проверить хук beforeDestroy () в моем компоненте, я написал следующую спецификацию:

 it("should test lifecycle when audio tag is destroyed", () => {
    // jsdom doesn't support any loading or playback media operations. 
    // As a workaround you can add a few stubs in your test setup:
    window.HTMLMediaElement.prototype.removeEventListener = () => { /* do nothing */ };
    // given
    const wrapper = mount(AudioPlayer, {
     // attachToDocument: true,
      propsData: {
        autoPlay: false,
        file: file,
        ended,
        canPlay
      }
    });
    wrapper.vm.loaded = true; // enable buttons
    const player = wrapper.find("#player");
    expect(wrapper.contains('#playPauseBtn')).toBe(true);
    // when
    player.destroy()
    // then
    expect(wrapper.contains('#playPauseBtn')).toBe(false);
  });

но я получаю ошибку, даже если destroy () используется как в документе ...

[vue-test-utils]: wrapper.destroy () может быть вызван только для экземпляра Vue

  177 |     expect(wrapper.contains('#playPauseBtn')).toBe(true); // OK
  178 |     // when
> 179 |     player.destroy()

где я не прав?

спасибо за отзыв

1 Ответ

0 голосов
/ 06 сентября 2018

const player = wrapper.find("#player"); возвращает оболочку элемента DOM, поэтому в основном HTML.

destroy () уничтожает экземпляр компонента Vue.

Вы не можете вызвать функцию уничтожения для "HTML-элемента". Я думаю, что вы хотели написать wrapper.destroy()

...