Как я могу проверить вычисляемое свойство в Vuejs, используя Jest? - PullRequest
0 голосов
/ 13 декабря 2018

я все еще новичок в модульном тестировании, и я хочу проверить, отображается ли связанная кнопка, когда вычисляемое свойство isLinkPresent возвращает ссылку на изображение и не является пустым для этого компонента:

    <template lang="pug">
    .merchandising_image_title
  .image(:style="`background-image: url('${imageTitle.image}');`" )
  .panel
    .top
      h2 {{imageTitle.top_title}}
      .line
    .center
      h1 {{imageTitle.center_title}}
    .bottom(v-if="isLinkPresent")
      a.btn.round( target='_blank' :href='imageTitle.link') Notify Me By Email
    </template>
    <script>
    export default {
      name: 'MerchandisingImageTitle',
      props: {
        imageTitle: Object
      },
      computed:{
        isLinkPresent(){
          return this.imageTitle.link && this.imageTitle.link !== ''
        }
      }
    }
    </script>

Я пытался проверить это таким образом, переписав вычисленное свойство:

    it("renders linked button when image title has a link and is not empty", () => {
  const wrapper = mount(ImageTitle, {
    propsData: {
      imageTitle: Object
    },
    computed: {
      isLinkPresent() {
        return this.imageTitle.link && this.imageTitle.link !== "";
      }
    }
  });
  expect(wrapper.find("a").isVisible()).toBe(true);
});

, но это дало мне эту ошибку:

[vue-test-utils]: find did not return a, cannot call isVisible() on empty Wrapper

  13 |     }
  14 |   });
> 15 |   expect(wrapper.find("a").isVisible()).toBe(true);
     |                            ^
  16 | });

я не уверен, что я делаю неправильно, любойПомощь была бы признательна

edit: хорошо, поэтому я понял, что неправильно передал propsData, поэтому я изменил его на propsData: { imageTitle: { imageTitleData: { image: "", top_title: "", center_title: "", link: ""}}} и сделал expect(wrapper.find(".bottom").exists()).toBe(true), так как isVisible () используется в основном в v-show, но все еще получаетэта ошибка: `визуализирует связанную кнопку, когда заголовок изображения имеет ссылку и не является пустым

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

      20 |     }
      21 |   });
    > 22 |   expect(wrapper.find(".bottom").exists()).toBe(true);
         |                                            ^
      23 | });
      24 |`

1 Ответ

0 голосов
/ 14 декабря 2018

Что ж, сначала вы должны установить монтирование компонента и передать правильные подпорки, чтобы охватить ваш вариант использования.

let wrapper = mount(MyComponent, {
   propsData: {
     imageTitle: {
       link: 'https://google.com'
     }
   }
});

Затем вы убедитесь, что ссылка отображается так, как ожидалось.Вы можете использовать exists или findAll и проверить количество упаковщиков.

expect(wrapper.find('.bottom a').exists()).toBe(true) или

expect(wrapper.findAll('.bottom a').length).toEqual(1)

PS: личное мнение, но imho imageTitle следует назвать более интуитивным, как imageData.Также было бы еще лучше передать их как отдельные реквизиты.Например,

<my-component link="" src="" top_title="" center_title=""

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...