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>