Настройка PHPUnit


Процедура установки и настройки для юнит-тестов PHP и WordPress как-то быстро забылись. Поэтому сохраним очередность шагов по локальной установке.

Сначала перейдем в каталог нашего плагина:

> cd ./my-plugin

Запустим установку с помощью composer:

> composer require --dev phpunit/phpunit

Добавляем секцию scripts в файл composer.json:

{
    "scripts": {
        "test": "phpunit"
    },
    "require-dev": {
        "phpunit/phpunit": "^9.5"
    }
}

Создадим папку tests, где создадим певый файл с тестом для нашего класса Temlater — test-temlater.php:

<?php

namespace MyPack;

use PHPUnit\Framework\TestCase;

require_once './includes/class-templater.php';

class TemplaterTest extends TestCase {

	public function test_true_is_true() {
		$this->assertEquals( true, true );
	}

	public function test_false_is_not_true() {
		$this->assertFalse( false, true );
	}
}

Чтобы всё заработало создадим файл phpunit.xml:

<?xml version="1.0"?>
<phpunit
	bootstrap="vendor/autoload.php"
	backupGlobals="false"
	colors="true"
	convertErrorsToExceptions="true"
	convertNoticesToExceptions="true"
	convertWarningsToExceptions="true"
	>
	<testsuites>
		<testsuite name="default">
			<directory prefix="test-" suffix=".php">./tests/</directory>
		</testsuite>
	</testsuites>
</phpunit>

и выполним команду начать тестировать:

> composer test

получим:

> phpunit
PHPUnit 9.5.21

..................                                                2 / 2 (100%)

Time: 00:00.081, Memory: 4.00 MB

OK (2 tests, 2 assertions)

всё работает, но для очистки совести убедимся, что тесты и проваливаются, добавив ещё один, который точно должен провалиться:

public function test_to_fail() {
	$this->assertEquals( false, true );
}

следующий шаг — настройка юнит-тестов для WordPress.