Тестирование

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

Ограничения

  • Модульные тесты не проверяют правила проверки, но вы можете проверить проверку вручную с помощью кнопки «Выполнить код» .
  • Проверки разрешений не выполняются для имитируемых API в модульных тестах.

Это руководство расскажет вам, как писать модульные тесты для вашего собственного шаблона. В этом примере создается шаблон переменной, который принимает входную строку и возвращает версию этой строки в верхнем регистре.

  1. Создайте новый шаблон переменной. Нажмите «Шаблоны» на левой панели навигации и нажмите «Создать» в разделе «Шаблоны переменных» .

  2. Нажмите «Поля» .

  3. Нажмите «Добавить поле» и выберите «Ввод текста» . Назовите поле text1 и установите отображаемое имя «Text 1» .

  4. На вкладке «Код» замените код по умолчанию на этот изолированный JavaScript:

    let input = data.text1;
    return input.toUpperCase();
    
  5. Нажмите «Тесты» , чтобы открыть вкладку тестирования.

  6. Нажмите «Добавить тест» и измените имя теста с «Тест без названия 1» на «Обрабатывает строки» .

  7. Нажмите на значок развертывания ( ), чтобы открыть изолированный редактор JavaScript теста. Замените код этим изолированным JavaScript:

    // Call runCode to run the template's code with a lowercase string
    let variableResult = runCode({text1: 'this is a test'});
    // Validate that the result of runCode is an uppercase string.
    assertThat(variableResult).isEqualTo('THIS IS A TEST');
    

    Этот тест передает строку 'this is a test' в переменную и проверяет, что переменная возвращает ожидаемое значение 'THIS IS A TEST' . API runCode используется для запуска кода шаблона на вкладке «Код» . Аргументом runCode является объект, который используется в качестве глобальных данных. API-интерфейс assertThat возвращает объект, который можно использовать для быстрого утверждения значений субъекта.

  8. Нажмите ▶ «Выполнить тесты» , чтобы запустить тест. Результаты теста появятся в консоли.

    Кнопка ▶ «Выполнить тесты» запускает все включенные тесты в шаблоне в указанном порядке. Чтобы изменить порядок, используйте значок перетаскивания (⠿). Тест можно временно включить или отключить, щелкнув кружок слева от названия теста. Чтобы запустить один тест, нажмите кнопку ▶, которая появляется при наведении курсора мыши на тест.

    Консоль должна вывести общее количество выполненных тестов и количество неудачных тестов, если таковые имеются. В этом случае был запущен только один тест, и он должен пройти.

  9. Нажмите «Добавить тест» еще раз, чтобы добавить второй тест. Измените имя теста с «Тест без названия 2» на «Обрабатывает неопределенное» .

  10. Нажмите на тест, чтобы развернуть его и открыть изолированный редактор JavaScript. Введите изолированный JavaScript в редакторе:

    let variableResult = runCode({});
    assertThat(variableResult).isEqualTo(undefined);
    
  11. Нажмите ▶ «Выполнить тесты» , чтобы запустить все тесты одновременно. Результат теста появится в консоли.

    Неопределенный тест Handles должен завершиться неудачей. Поздравляем, вы нашли ошибку!

  12. Нажмите «Код» , чтобы вернуться и отредактировать изолированный код JavaScript шаблона. Обновите изолированный JavaScript следующим образом:

    const getType = require('getType');
    
    let input = data.text1;
    if (getType(input) !== 'string') {
      return input;
    }
    return input.toUpperCase();
    

    Обновленный код соответствует передовому опыту проверки input переменной перед ее использованием.

  13. Нажмите «Тесты» , чтобы вернуться к списку тестовых случаев.

  14. Нажмите ▶ «Выполнить тесты» , чтобы снова запустить все тестовые случаи. На этот раз тест Handles undef должен пройти.

  15. Нажмите «Сохранить» и закройте редактор шаблонов.