Верх страницы
Обложка к записи Как тестировать константы
Время для прочтения: 2 мин. 8 сек.

Как тестировать константы

Константы можно протестировать при помощи 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.

ВКонтакте
Одноклассники
Linkedin
Telegram
WhatsApp

Автор: Кобзарёв Михаил

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все.

Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса.

Ведет блог о разработке, дайджест в телеграмме и в ВК.

Комментарии