feugene / dev-tools
PHP developer tools
Requires
- php: >=7.2
- ext-json: *
- avto-dev/stacked-dumper-laravel: ^1.1
- phpunit/phpunit: ~8.1
- tarampampam/guzzle-url-mock: ^1.1
Requires (Dev)
- ext-pdo_sqlite: *
- ext-sqlite3: *
- jeremeamia/superclosure: ^2.4
- laravel/laravel: ~5.8 || ~6.0
- mockery/mockery: ~1.0
- phpstan/phpstan: ^0.11
Suggests
- codedungeon/phpunit-result-printer: PHPUnit Pretty Result Printer
- jeremeamia/superclosure: Library for closures serialization and hashing
- johnkary/phpunit-speedtrap: Reports on slow-running tests in your PHPUnit test suite
README
PHP developers tools
Install
Require this package with composer using the following command:
$ composer require --dev feugene/dev-tools "^2.1"
Installed
composer
is required (how to install composer).
You need to fix the major version of package.
Использование
Данный пакет позволяет легко интегрировать в ваше приложение вспомогательные инструменты, позволяющие более эффективно вести разработку. Разделить их можно на следующие группы:
Вспомогательные сервисы для Laravel
Для Laravel-приложений вы можете подключать следующие сервис-провайдеры:
Unit-тестирование приложения
В контексте фреймворка
PHPUnit
Bootstrap
Bootstrap - это файл, который выполняется перед запуском всех тестов, единожды. Основная его задача - произвести подготовку среды - создать директории для временных файлов (удалив предыдущие), подготовить схему БД и так далее.
Вы можете указать путь до своего собственного bootstrap-файла в конфигурации PHPUnit
(./phpunit.xml
):
<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="./tests/bootstrap.php"> <!-- configuration --> </phpunit>
Для Laravel-приложений
Написание кода по рекурсивному созданию директорий, соединению с БД может показаться вам довольно утомительным. Для того, чтобы упростить данную задачу вы можете создать свой класс bootsrapper
-а, который умеет поочередное выполнение всех методов внутри себя, начинающихся с префикса boot*
при создании собственного экземпляра. Более того - $this->app
уже хранит инстанс вашего приложения (достаточно подключить нужный трейт). Взгляните на пример:
<?php class MyBootstrap extends \AvtoDev\DevTools\Tests\Bootstrap\AbstractLaravelTestsBootstrapper { use AvtoDev\DevTools\Tests\PHPUnit\Traits\CreatesApplicationTrait; public function bootPrepareDatabase() { $this->app->make(Illuminate\Contracts\Console\Kernel::class)->call('migrate:refresh'); } }
И вы всегда имеете "свежую" схему БД перед запуском тестов.
Прочие приложения
Более простая реализация:
<?php class MyBootstrap extends \AvtoDev\DevTools\Tests\Bootstrap\AbstractTestsBootstrapper { public function bootMakeSome() { // Put your code here } public function bootMakeSomethingElse() { // Put your code here } }
В обоих случаях не забудьте создать файл
./tests/bootstrap.php
, написав в нём<?php new MyBootstrap();
, указав<phpunit bootstrap="./tests/bootstrap.php">
в конфигурацииPHPUnit
.
Абстрактные классы Unit-тестов
Для более удобного тестирования вашего приложения вы можете использовать абстрактные классы Unit-тестов, поставляемых с данным пакетом (имеются версии как для Laravel-приложений, так и без данной зависимости).
Их отличительная особенность заключается в том, что они содержат дополнительные assert
-методы, которые позволят вам писать писать более лаконичные и выразительные тесты. Данный функционал подключается с помощью трейтов, так что вы сможете при необходимости составить свой собственный абстрактный класс (не наследованный от поставляемого) с необходимым набором "фишек".
Рекомендация использовать абстрактные классы обусловлена тем, что их функционал с течением времени будет расширяться, и вы сможете получать их новые возможности при помощи одной лишь команды composer update efureev/dev-tools
.
Для Laravel-приложений
Наследуйте классы своих тестов от AvtoDev\DevTools\Tests\PHPUnit\AbstractLaravelTestCase
.
Прочие приложения
Наследуйте классы своих тестов от AvtoDev\DevTools\Tests\PHPUnit\AbstractTestCase
.
PHPUnit-трейты
Ниже в виде сводной таблицы представлены имена трейтов и поставляемый с ними функционал. Все трейты расположены в AvtoDev\DevTools\Tests\PHPUnit\Traits
:
Testing
For package testing we use phpunit
framework and docker-ce
+ docker-compose
as develop environment. So, just write into your terminal after repository cloning:
$ make build $ make latest # or 'make lowest' $ make test
Changes log
Changes log can be found here.
Support
If you will find any package errors, please, make an issue in current repository.
License
This is open-sourced software licensed under the MIT License.