2017 © Pedro Peláez
 

library dev-tools

PHP developer tools

image

avto-dev/dev-tools

PHP developer tools

  • PHP
  • 4 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 15 Versions
  • 692 % Grown

The README.md

PHP logo , (*1)

PHP developers tools

Version ![PHP Version][badge_php_version] Build Status ![Coverage][badge_coverage] Downloads count ![License][badge_license], (*2)

Install

Require this package with composer using the following command:, (*3)

$ composer require --dev avto-dev/dev-tools "^2.0"

Installed composer is required (how to install composer)., (*4)

You need to fix the major version of package., (*5)

Использование

Данный пакет позволяет легко интегрировать в ваше приложение вспомогательные инструменты, позволяющие более эффективно вести разработку. Разделить их можно на следующие группы:, (*6)

Вспомогательные сервисы для Laravel

Для Laravel-приложений вы можете подключать следующие сервис-провайдеры:, (*7)

Сервис-провайдер Его назначение
DatabaseQueriesLogger Производит запись всех обращений к базе данных в лог-файл приложения

Unit-тестирование приложения

В контексте фреймворка PHPUnit, (*8)

Bootstrap

Bootstrap - это файл, который выполняется перед запуском всех тестов, единожды. Основная его задача - произвести подготовку среды - создать директории для временных файлов (удалив предыдущие), подготовить схему БД и так далее., (*9)

Вы можете указать путь до своего собственного bootstrap-файла в конфигурации PHPUnit (./phpunit.xml):, (*10)

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./tests/bootstrap.php">
    <!-- configuration -->
</phpunit>

Для Laravel-приложений

Написание кода по рекурсивному созданию директорий, соединению с БД может показаться вам довольно утомительным. Для того, чтобы упростить данную задачу вы можете создать свой класс bootsrapper-а, который умеет поочередное выполнение всех методов внутри себя, начинающихся с префикса boot* при создании собственного экземпляра. Более того - $this->app уже хранит инстанс вашего приложения (достаточно подключить нужный трейт). Взгляните на пример:, (*11)

<?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');
    }
}

И вы всегда имеете "свежую" схему БД перед запуском тестов., (*12)

Прочие приложения

Более простая реализация:, (*13)

<?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., (*14)

Абстрактные классы Unit-тестов

Для более удобного тестирования вашего приложения вы можете использовать абстрактные классы Unit-тестов, поставляемых с данным пакетом (имеются версии как для Laravel-приложений, так и без данной зависимости)., (*15)

Их отличительная особенность заключается в том, что они содержат дополнительные assert-методы, которые позволят вам писать писать более лаконичные и выразительные тесты. Данный функционал подключается с помощью трейтов, так что вы сможете при необходимости составить свой собственный абстрактный класс (не наследованный от поставляемого) с необходимым набором "фишек"., (*16)

Рекомендация использовать абстрактные классы обусловлена тем, что их функционал с течением времени будет расширяться, и вы сможете получать их новые возможности при помощи одной лишь команды composer update avto-dev/dev-tools., (*17)

Для Laravel-приложений

Наследуйте классы своих тестов от AvtoDev\DevTools\Tests\PHPUnit\AbstractLaravelTestCase., (*18)

Прочие приложения

Наследуйте классы своих тестов от AvtoDev\DevTools\Tests\PHPUnit\AbstractTestCase., (*19)

PHPUnit-трейты

Ниже в виде сводной таблицы представлены имена трейтов и поставляемый с ними функционал. Все трейты расположены в AvtoDev\DevTools\Tests\PHPUnit\Traits:, (*20)

Имя трейта Функционал
AdditionalAssertionsTrait Дополнительные assert-методы
CreatesApplicationTrait Метод, создающий инстанс Laravel-приложения. При его использовании появляется возможность использовать методы beforeApplicationBootstrapped и afterApplicationBootstrapped
InstancesAccessorsTrait Методы доступа к protected\private методам\свойствам у классов (с помощью рефлексии)
LaravelEventsAssertionsTrait Методы тестирования событий (events) и их слушателей (listeners)
LaravelLogFilesAssertsTrait Методы тестирования лог-файлов Laravel приложения
LaravelCommandsAssertionsTrait Методы тестирования Laravel artisan комманд
WithDatabaseQueriesLogging Подключая данный трейт в класс теста - все запросы к БД будут записываться в log-файл (класс теста должен наследоваться при этом от AbstractLaravelTestCase)
CarbonAssertionsTrait Методы для тестирования Carbon-объектов
WithDatabaseDisconnects Подключая данный трейт в класс теста - на tearDown происходит отключение от всех БД (причина)
WithMemoryClean Подключая данный трейт в класс теста - на tearDown происходит очистка свойств класса. Для использования этого трейта вне Laravel-framework необходимо вызывать метод clearMemory на tearDown интересующего класса
WithGuzzleMocking Трейт, поставляющий метод создания хэндлера-обработчика запросов HTTP клиента Guzzle 6
AppVersionAssertionsTrait Методы для проверки версии приложения и крайней версии, указанной в файле CHANGELOG.md
LaravelRoutesAssertsTrait Методы для проверки правильной настройки роутов Laravel

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:, (*21)

$ make build
$ make latest # or 'make lowest'
$ make test

Changes log

Release date ![Commits since latest release][badge_commits_since_release], (*22)

Changes log can be found here., (*23)

Support

Issues ![Issues][badge_pulls], (*24)

If you will find any package errors, please, make an issue in current repository., (*25)

License

This is open-sourced software licensed under the MIT License., (*26)

The Versions

17/07 2018

dev-master

9999999-dev

PHP developer tools

  Sources   Download

MIT

The Requires

  • php >=7.0 <7.3

 

The Development Requires

dev tools

17/07 2018

v1.5.0

1.5.0.0

PHP developer tools

  Sources   Download

MIT

The Requires

  • php >=7.0 <7.3

 

The Development Requires

dev tools

21/06 2018

v1.x-dev

1.9999999.9999999.9999999-dev

PHP developer tools

  Sources   Download

MIT

The Requires

  • php >=7.0 <7.3

 

The Development Requires

dev tools

20/06 2018

v1.4.0

1.4.0.0

PHP developer tools

  Sources   Download

MIT

The Requires

  • php >=7.0 <7.3

 

The Development Requires

dev tools

19/06 2018

v1.3.0

1.3.0.0

PHP developer tools

  Sources   Download

MIT

The Requires

  • php >=7.0 <7.3

 

The Development Requires

dev tools

17/06 2018

v1.2.0

1.2.0.0

PHP developer tools

  Sources   Download

MIT

The Requires

  • php >=7.0 <7.3

 

The Development Requires

dev tools

13/06 2018
09/06 2018
08/06 2018
08/06 2018
25/05 2018
25/05 2018
25/05 2018
16/05 2018
16/05 2018