Должен ли я проверить частные функции Vue.js? - PullRequest
1 голос
/ 03 июля 2019

Поэтому после того, как я прочитал общие советы и посмотрел видео о тестировании , предоставленное Vue.js, я решил протестировать только поведение моих компонентов. Но я, возможно, неправильно понимаю концепцию. Вот этот компонент:

<template>
        <es-btn
          class="a"
          round
          outline
          color="primary"
          @click="skipScan"
        >
          Skip Upload
        </es-btn>
</template>
<script>
export default {
  data: () => ({
    uploadScanningDialog: false,
  }),

  methods: {
// public functions here which will be tested

    skipScan() {
      hideDialog();
      triggerSkipScan();
    },
  },
}

// private functions here as vue.js suggests

function hideDialog() {
  this.uploadScanningDialog = false;
}

....

</script>

Я хочу проверить поведение:

it('should hide itself and show next dialog when Scan Button is clicked', () => {
    const data = {
      uploadScanningDialog: true,
    };
    wrapper.setData(data);

    expect(wrapper.vm.uploadScanningDialog).toBeTruthy();
    wrapper.find('.a').trigger('click');
    expect(wrapper.vm.uploadScanningDialog).toBeFalsy();
  });

Итак, вот вопросы и ошибки:

  1. Должен ли я выполнить этот тест, запустив действие вместо вызова самого метода? Потому что раньше я проверял, вызывая метод и ожидая некоторых результатов, а не вызывая компонент, который вызывает метод

  2. Разве я не должен проверять частные функции? Поскольку мой тест пытается вызвать реальный метод, тест, которым я делюсь, получает ошибку. Я буду издеваться над ними, но я не уверен, как продолжить

1 Ответ

2 голосов
/ 03 июля 2019

Как правило, лучше по возможности тестировать код через общедоступный API, где это возможно.

Это улучшает ремонтопригодность, как:

  • Позволяет реорганизовать любые частные функции без необходимости обновления модульных тестов.
  • Если вы вносите изменения в свои частные функции, вы можете утверждать, что ничего не сломали, запустив свои модульные тесты для вашего открытого API.

Независимо от того, запускаете ли вы свои модульные тесты, вызывая открытый метод или вызывая событие DOM, это вопрос выбора.

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

...