WordPress DemoSite

Тестовый сайт для экспериментов и демонстраций возможностей

Unit-тесты

Написание unit-тестов в PHP обычно выполняется с использованием фреймворка PHPUnit. PHPUnit — это популярный инструмент для тестирования PHP-кода, который позволяет писать и запускать unit-тесты для проверки корректности работы отдельных компонентов (юнитов) вашего кода.

Установка PHPUnit

Для начала установите PHPUnit с помощью Composer:

composer require --dev phpunit/phpunit

После установки PHPUnit будет доступен в директории vendor/bin/phpunit.

Создание тестового класса

Предположим, у вас есть класс Calculator, который вы хотите протестировать:

// src/Calculator.php
class Calculator
{
    public function add($a, $b)
    {
        return $a + $b;
    }

    public function subtract($a, $b)
    {
        return $a - $b;
    }
}

Теперь создадим тестовый класс для этого класса:

// tests/CalculatorTest.php
use PHPUnit\Framework\TestCase;

class CalculatorTest extends TestCase
{
    public function testAdd()
    {
        $calculator = new Calculator();
        $result = $calculator->add(2, 3);
        $this->assertEquals(5, $result);
    }

    public function testSubtract()
    {
        $calculator = new Calculator();
        $result = $calculator->subtract(5, 3);
        $this->assertEquals(2, $result);
    }
}

Запуск тестов

Чтобы запустить тесты, выполните следующую команду в терминале:

vendor/bin/phpunit tests/CalculatorTest.php

Основные методы PHPUnit

Пример с использованием моков

Иногда вам нужно протестировать код, который зависит от других классов или сервисов. В этом случае можно использовать моки (mock-объекты):

use PHPUnit\Framework\TestCase;

class UserServiceTest extends TestCase
{
    public function testGetUser()
    {
        // Создаем мок-объект для класса UserRepository
        $userRepository = $this->createMock(UserRepository::class);

        // Настраиваем мок-объект
        $userRepository->method('find')->willReturn(new User(1, 'John Doe'));

        // Создаем экземпляр UserService, передавая мок-объект
        $userService = new UserService($userRepository);

        // Выполняем тестируемый метод
        $user = $userService->getUser(1);

        // Проверяем результат
        $this->assertEquals('John Doe', $user->getName());
    }
}

Группировка тестов

Вы можете группировать тесты с помощью аннотаций:

/**
 * @group database
 */
class DatabaseTest extends TestCase
{
    public function testConnection()
    {
        // Тест для проверки подключения к базе данных
    }
}

Затем можно запускать только тесты из определенной группы:

vendor/bin/phpunit --group database

Заключение

Unit-тесты — это важная часть разработки, которая помогает убедиться, что ваш код работает корректно и продолжает работать после внесения изменений. PHPUnit предоставляет мощные инструменты для написания и запуска тестов, а также для создания мок-объектов и группировки тестов.

Полный стэк: .NET | AMQP | Android | api | Bash | Bootstrap | C++ | cms | Composer | css | Data | Elasticsearch | ESP32 | Git | GraphQL | Gulp | JavaScript | JetStream | Joomla | js | Kotlin | Laravel | LEMP | Linux | LMS | Markdown | MODX | Moodle | MySQL | NATS | Nginx | Node.js | OpenCart | Parsedown | PHP | Python | RabbitMQ | SCSS | SEO | Simpla | SOAP | SQL | startup | Swift | Symfony | Tailwind | Translation | Twig | Ubuntu | Unit | web3 | Webasyst | Webpack | WebSocket | WordPress | XML | Бизнес | блокчейн | ИИ | интернет-магазин | ЛК | Руководство | ТЗ | фреймворк | Яндекс.Трекер