как модульно тестировать вложенные функции и JS

#javascript #unit-testing #jestjs

#javascript #модульное тестирование #jestjs

Вопрос:

Присоединился к проекту как абсолютный новичок. Моя задача — создавать модульные тесты для существующего JS-кода.

Общая система веб-сайта проекта работает следующим образом (насколько я понимаю): Python Django содержит всю логику, базу данных и правила над html-шаблонами, когда JS-файлы работают как «виджеты», которые помогают редактировать html-код на странице.

В основном все файлы JS похожи:

 var WidgetSmart = (function() {
    var map
    function create_event() {
        $('.leaflet-pm-toolbar').addClass('leaflet-pm-toolbar-disable')
        /*
         * lines of code
         */
        another_function();
    }
    function another_function(){
        /*
         * lines of code
         */
    }

    return {
        init: function(map_obj) {
          map = map_obj
          create_event()
        }
    };
}());
  

Как сказал мой коллега, все return это делается по соображениям безопасности (инкапсуляция методов).

  1. Для этого примера, как я полагаю, мне нужно проверить работу create_event функции (и another_function ?), Но как выбрать и протестировать только эту часть?

  2. Как правильно выполнить модульное тестирование этих файлов? (с помощью mocks или другого дополнительного?) Или необходимо перестроить этот код?

Комментарии:

1. Вы этого не делаете. Вы тестируете через общедоступный API, метод init . В противном случае вы нарушаете инкапсуляцию, которую должен обеспечить IIFE.