HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Большинство тестов на одну и ту же функциональность сильно похожи друг на друга, особенно в части начальной подготовки данных. Например, в прошлом уроке каждый тест начинался со строчки: Stack\make(). Это еще не дублирование, но уже шаг в эту сторону. Как правило, реальные тесты устроены сложнее и включают в себя большую подготовительную работу.</p>
1 <p>Большинство тестов на одну и ту же функциональность сильно похожи друг на друга, особенно в части начальной подготовки данных. Например, в прошлом уроке каждый тест начинался со строчки: Stack\make(). Это еще не дублирование, но уже шаг в эту сторону. Как правило, реальные тесты устроены сложнее и включают в себя большую подготовительную работу.</p>
2 <p>Допустим, мы разрабатываем библиотеку<a>functional-php</a>и хотим протестировать ее функции для обработки коллекций:</p>
2 <p>Допустим, мы разрабатываем библиотеку<a>functional-php</a>и хотим протестировать ее функции для обработки коллекций:</p>
3 <ul><li>filter</li>
3 <ul><li>filter</li>
4 <li>every</li>
4 <li>every</li>
5 <li>zip</li>
5 <li>zip</li>
6 <li>и другие</li>
6 <li>и другие</li>
7 </ul><p>Для работы этих функций нужна заранее подготовленная коллекция. Проще всего придумать одну, которая подойдет для тестирования большинства или даже всех функций:</p>
7 </ul><p>Для работы этих функций нужна заранее подготовленная коллекция. Проще всего придумать одну, которая подойдет для тестирования большинства или даже всех функций:</p>
8 <p>Осталось найти место для определения этой коллекции. Для решения подобных задач в тестовых фреймворках используются хуки - специальные методы, вызываемые фреймворком на определенные события. Самый распространенный среди них - метод setUp(). Он автоматически вызывается перед каждым тестом:</p>
8 <p>Осталось найти место для определения этой коллекции. Для решения подобных задач в тестовых фреймворках используются хуки - специальные методы, вызываемые фреймворком на определенные события. Самый распространенный среди них - метод setUp(). Он автоматически вызывается перед каждым тестом:</p>
9 <p>Каждое выполнение хука устанавливает значения свойств в начальное значение. Это важно, когда тест меняет эти данные. Только в этом случае тесты не будут зависеть друг от друга и порядка выполнения.</p>
9 <p>Каждое выполнение хука устанавливает значения свойств в начальное значение. Это важно, когда тест меняет эти данные. Только в этом случае тесты не будут зависеть друг от друга и порядка выполнения.</p>
10 <p>Для выполнения кода после тестов используется метод tearDown(). У него такой же принцип работы, но вызывается он не до, а после каждого теста.</p>
10 <p>Для выполнения кода после тестов используется метод tearDown(). У него такой же принцип работы, но вызывается он не до, а после каждого теста.</p>
11 <p>Сами хуки принадлежат конкретному классу. Другими словами, если в тестах есть несколько классов, то определенные в одном классе хуки не вызываются для тестов других классов.</p>
11 <p>Сами хуки принадлежат конкретному классу. Другими словами, если в тестах есть несколько классов, то определенные в одном классе хуки не вызываются для тестов других классов.</p>