PHP: Автоматическое тестирование
Теория: Подготовка данных
Большинство тестов на одну и ту же функциональность сильно похожи друг на друга, особенно в части начальной подготовки данных. Например, в прошлом уроке каждый тест начинался со строчки: Stack\make(). Это еще не дублирование, но уже шаг в эту сторону. Как правило, реальные тесты устроены сложнее и включают в себя большую подготовительную работу.
Допустим, мы разрабатываем библиотеку functional-php и хотим протестировать ее функции для обработки коллекций:
- filter
- every
- zip
- и другие
Для работы этих функций нужна заранее подготовленная коллекция. Проще всего придумать одну, которая подойдет для тестирования большинства или даже всех функций:
Осталось найти место для определения этой коллекции. Для решения подобных задач в тестовых фреймворках используются хуки — специальные методы, вызываемые фреймворком на определенные события. Самый распространенный среди них — метод setUp(). Он автоматически вызывается перед каждым тестом:
Каждое выполнение хука устанавливает значения свойств в начальное значение. Это важно, когда тест меняет эти данные. Только в этом случае тесты не будут зависеть друг от друга и порядка выполнения.
Для выполнения кода после тестов используется метод tearDown(). У него такой же принцип работы, но вызывается он не до, а после каждого теста.
Сами хуки принадлежат конкретному классу. Другими словами, если в тестах есть несколько классов, то определенные в одном классе хуки не вызываются для тестов других классов.

