Когда дело доходит до разработки приложений с помощью Laravel, тестирование играет решающую роль в обеспечении стабильности и надежности вашей кодовой базы. Однако существуют сценарии, в которых вам может потребоваться временно игнорировать определенные тесты, чтобы ускорить разработку или пропустить тесты, которые не имеют отношения к вашим текущим задачам. В этой статье блога мы рассмотрим различные методы Laravel, позволяющие игнорировать тесты и повышать эффективность разработки.
Метод 1: пропуск тестов с аннотациями
Laravel использует PHPUnit в качестве своей среды тестирования, которая предоставляет мощные аннотации для управления тестами. Одна из таких аннотаций — @group, которая позволяет группировать тесты и выборочно запускать или игнорировать их. Допустим, у вас есть тестовый пример с несколькими методами тестирования. Чтобы игнорировать определенный метод тестирования, вы можете добавить над ним аннотацию @group, а затем исключить эту группу при запуске тестов. Вот пример:
/
* @group ignore
*/
public function testIgnoredMethod()
{
// Test logic
}
При запуске тестов вы можете исключить группу «игнорировать», чтобы пропустить эти тесты:
php artisan test --exclude-group ignore
Метод 2. Игнорирование тестов с соглашениями об именах
Другой подход к игнорированию тестов — использование соглашений об именах PHPUnit. Добавляя к имени тестового метода префикс «test» и тильду (~), PHPUnit автоматически пропускает этот тест. Например:
public function test~IgnoredMethod()
{
// Test logic
}
При запуске тестов PHPUnit пропустит любой метод с префиксом тильды (~) в имени.
Метод 3: пропуск тестов с условиями
Иногда вам может потребоваться игнорировать тесты, основанные на определенных условиях выполнения. Laravel предоставляет удобный способ условного пропуска тестов с помощью метода skipв ваших тестовых примерах. Вот пример:
public function testConditionalSkip()
{
if (!extension_loaded('redis')) {
$this->markTestSkipped('The Redis extension is not available.');
}
// Test logic that requires Redis
}
В этом примере тест будет пропущен, если расширение Redis не загружено.
Метод 4. Игнорирование тестов с переменными среды
Вы также можете игнорировать тесты, основанные на наличии определенных переменных среды. Laravel позволяет вам использовать аннотацию @requiresдля указания необходимых переменных среды для теста. Если указанные переменные среды отсутствуют, тест будет пропущен. Вот пример:
/
* @requires PHP_VERSION >= 7.4
* @requires extension pdo_mysql
*/
public function testEnvironmentRequirements()
{
// Test logic that requires PHP 7.4 and the pdo_mysql extension
}