Тестирование Laravel: игнорируя тесты и повышая эффективность разработки

Когда дело доходит до разработки приложений с помощью 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
}