Это руководство поможет вам начать Tтестировать Dразрывную Dразработку (TDD) сегодня с JavaScript.
Почему ТДД?
Проекты без теста выглядят как набор вещей, склеенных вместе.
Проекты, полностью покрытые тестами, создают совершенно другой уровень уверенности в вашей кодовой базе.
Никогда больше не ломайте свой код при реализации новых функций.
Что такое ТДД?
TDD — это разработка через тестирование. Вот и все! Мы разработали наше программное обеспечение на основе тестов, написанных до нашего производственного кода!
Это один из способов продумать свои требования или дизайн, прежде чем писать функциональный код.
При чтении о TDD вы увидите 3 этапа: «Красный, зеленый, рефакторинг».
Подход «красный, зеленый, рефакторинг» помогает разработчикам разделить свое внимание на три этапа:
- Красный — подумайте, что вы хотите разработать.
- Зеленый — подумайте, как сделать так, чтобы ваши тесты прошли успешно.
- Рефакторинг — подумайте, как улучшить существующую реализацию.
Практика
Приложение с одним файлом
Мы можем собрать весь «проект» в один файл для простоты, создав файл с именем index.html.
В нашем случае мы используем библиотеку QUnit для проведения тестов.
Откройте index.html в своем браузере, и вы увидите результат тестов:
Расчленить тесты
Написание тестовых утверждений состоит из трех частей:
Описание — обычно первый параметр метода QUnit test().
Предоставляет описание для нашего теста, что он будет делать?
QUnit.test(‘This sample test should always pass!’,
Вычисление — выполнить функцию/метод.
Мы получаем assert в функции, которая используется для проверки информации. Основываясь на утверждениях, мы получим результат нашего теста как неудачный или успешный.
function(assert) { let result = 1 + 1;
Утверждение — убедитесь, что результат ваших вычислений соответствует вашим ожиданиям.
Проверяем, равен ли результат 2, в этом случае да, тогда тест пройден.
assert.equal(result, 2); });
Зная это, мы начнем разрабатывать наши тесты на основе заданного сценария.
Сценарий: вызов FizzBuzz
Введите библиотеку, которая получает число и:
Если число делится на 3, вернуть 'Fizz',
Если число делится на 5, вернуть 'Buzz',
Если число делится на 3 и 5, вернуть 'FizzBuzz',< br /> Если не кратно ничему, вернуть число.
Шаг первый: ваш тест должен быть написан так, чтобы он провалился
Да, все тесты потерпят неудачу, цель этого первого шага — создать наши тесты, которые будут служить спецификацией для следующих методов.
Шаг второй: пройдите тест
Наша цель сейчас — создать функцию, отвечающую требованиям, заданным тестами, она будет получать в качестве параметра число и возвращать что-то согласно тому, что было указано ранее.
Шаг третий: рефакторинг вашего кода
На этом этапе мы собираемся более подробно рассмотреть тот код, который мы только что создали для нашего тестового прохода.
Именно в этот момент мы удаляем дублирование, переименовываем переменные, извлекаем методы, извлекаем классы, извлекаем интерфейсы, используем какой-то известный шаблон и т. д. Именно в этот момент мы можем оставить наш код простым и понятным.
Мы сделали функцию, на 100% покрытую тестами, очень хорошо 😃
Вывод
Это только начало о TDD, я надеюсь, что это было полезно, чтобы дать вам первое представление о силе этой парадигмы, весь проект здесь, не стесняйтесь 👏 и помогите другим найти.