Как тестировать константы
Константы можно протестировать при помощи Function Mocker.
Исходный код:
class Constant { public function abspath() { return ABSPATH; } }
Для тестирования необходимо немного изменить код. Константы необходимо получать через функцию constant
:
class Constant { public function abspath() { return constant( 'ABSPATH' ); } }
Для тестирования используем библиотеку lucatume/function-mocker
. Установим ее через composer:
composer require lucatume/function-mocker
В файле bootstrap.php инициализируем FunctionMocker
:
use tad\FunctionMocker\FunctionMocker; require_once 'path/to/vendor/autoload.php'; FunctionMocker::init( [ 'whitelist' => [ realpath( 'path/to/root/of/the/project/' ), ], 'redefinable-internals' => [ 'constant' ], ] );
В тестовом классе нужно обновить фикстуры setUp
и tearDown
, заменить функцию constant
и убедиться, что данная функция вызвана правильно:
use tad\FunctionMocker\FunctionMocker; use PHPUnit\Framework\TestCase; class Test_Constant extends TestCase { public function setUp(): void { FunctionMocker::setUp(); parent::setUp(); } public function tearDown(): void { parent::tearDown(); FunctionMocker::tearDown(); } public function test_abspath() { $abspath = '/abspath/'; $mock_constant = FunctionMocker::replace( 'constant', $abspath ); $constant = new Constant(); $this->assertSame( $abspath, $constant->abspath() ); $mock_constant->wasCalledWithOnce( [ 'ABSPATH' ] ); } }
Источник: WP Punk.