Рубрики
Без рубрики

Быстрое введение в тестовое развитие с помощью шума

Nicolas Mitchell Эта статья является простым прохождением того, как применять принципы разработки тестирования (TDD) к упражнению JavaScript с использованием Jest. Международный опыт работы в мероприятии несколько лет, развивающихся на моих личных проектах, я недавно решил стать разработчиком полного стека. Эта новая ситуация призвала меня

Автор оригинала: FreeCodeCamp Community Member.

Николяс Митчелл

Эта статья является простым прохождением того, как применять принципы разработки тестирования (TDD) для упражнения JavaScript с использованием шума.

вступление

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

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

Вот почему я хотел начать свое путешествие через тестовое развитие. Я решил поделиться своими первыми шагами здесь с вами.

Упражнение

Я решил начать с первого Осеров ТДД Ката. Вы можете получить доступ к полному упражнению здесь Отказ

Цель состоит в том, чтобы обеспечить функцию, которая принимает строку ( »1, 2, 3« ) и возвращает сумму всех чисел.

Наш проект будет иметь следующую структуру:

js-kata-jest/
├─ src/
  └─ kata.js
├─ test/
  └─ kata.test.js
└─ package.json

Настройка тестовой среды

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

Установка вызывающей зависимости

yarn add --dev jest

или с NPM :

npm install --save-dev jest

Активация шума на вашем редакторе кода

Я использую Atom в качестве редактора кода, и установил Тестер-шума упаковка. Это позволило мне запустить свои тесты о сохранении для любого * .test.js файл.

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

Теория позади TDD довольно проста и вращается около 3 шагов:

  1. Написание теста на небольшую часть функциональности и проверка того, что этот новый тест не удается (красный шаг)
  2. Написание кода, который делает тестовый проход, то проверка того, что ваш предыдущий тест и новый успешный (зеленый шаг)
  3. Рефакторинг кода, чтобы убедиться, что он понятен, понятно, и хорошо ведет себя хорошо с предыдущими функциями

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

Решение упражнения

Первая петля

Во-первых, мы хотим справиться с этим, где наша Добавить Функция дана пустая строка или один с одним элементом.

  1. Написание тестов
  • Первый тест проверяет, что пустая строка возвращается 0
  • Второе проверяет, что ни одной строки элемента возвращает предоставленный элемент

2. Написание кода

  • Сначала мы возвращаем 0 по умолчанию
  • Тогда мы предоставляем Если Заявление, которое обрабатывает разбор одного представленного элемента

Вот окончательный код:

3. Рефактирование кода

Поскольку это наша первая функциональность, мы можем пропустить этот шаг сейчас – но мы скоро вернемся к нему. 😉

Вторая петля

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

  1. Написание тестов

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

2. Написание кода

  • Сначала мы создаем новый Если Заявление, с целью быть уверенным, что наши первые два теста влияют на новое решение
  • Во-вторых, мы создаем новый массив из строки ввода, используя , в качестве сепаратора
  • Наконец, мы разбираем каждый элемент вновь созданного массива для расчета суммы

Вот окончательный код:

3. Рефактирование кода

Как мы видим выше, в нашем коде есть несколько проблем:

  • Двое, если утверждение не должно быть декоррелировано, так как добавление одного или нескольких до нуля должно вести себя то же самое.
  • Значение сепаратора утонуло в коде. Это добавляет сложность, если мы хотим изменить на ; Сепаратор, например.
  • Большая часть нашего кода находится в Если утверждение. Мы могли бы отменить логику, чтобы извлечь наш основной код из него.

Итак, мы можем добавить новый разделитель Переменная, которая примет решение о сепараторе. Мы также можем объединить два Если Заявление в один, а затем обратный логика.

Теперь мы можем снова запустить наш тест, прежде чем перейти к следующей цикле.

Третья петля

Теперь мы можем обрабатывать декларацию новых сепараторов и избежать ввода отрицательных чисел.

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

2. Написание кода

  • Во-первых, мы заменяем разделитель Строка A сепараторы Массив, где мы добавляем \ N значение.
  • Во-вторых, мы вводим новый поиск разделителя через регулярное выражение. Это будет добавлено к предыдущему массиву.
  • Теперь мы можем присоединиться к предыдущему элементам массива, чтобы разделить их строку.
  • Мы фильтруем полученный массив, чтобы удалить все не цифровые элементы.
  • Мы добавляем новый массив, негативы , это будет обнаруживать отрицательные значения в записи.
  • Если негативы Массив не пуст, бросить ошибку.

Вот окончательный код:

3. Рефактирование кода

У нас теперь есть две новые возможные оптимизации:

  • Мы используем регулярное выражение дважды, и готовы его легко изменить. Мы можем извлечь его в новом Const Regexp Отказ
  • Мы рассчитываем Parсент (список [I]) Несколько раз, поэтому мы должны хранить значение только один раз, чтобы ускорить для петля.

Заключение

Теперь мы можем снова запустить наши тесты, чтобы убедиться, что все наши ожидаемые функциональные возможности все еще работают.

Теперь вы можете продолжаться самостоятельно. Проверьте окончательную версию KATA со всеми тестами, проходящими здесь Отказ

Не стесняйтесь добраться до меня в Twitter, если у вас есть какие-либо вопросы или комментарии @nclsmitchell или через средний:)

Спасибо за ваше чтение, и пожалуйста, хлопайте для меня, если вам нравится этот пост.