Download the PHP package uglide/db-fixture-manager without Composer

On this page you can find all versions of the php package uglide/db-fixture-manager. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package db-fixture-manager

DbFixtureManager

DbFixtureManager- создан с целью упростить управление фикстурами БД и подготовку тестового окружения для выполнения тестов.

Проблематика

Для лучшего понимания происходящего, рассмотрим следующий тривиальный пример:

Предположим, что в нашей системе разработан некий модуль shops, функционал которого покрыт различными тестами (модульными и функциональными):

Допустим, что наша текущая задача - добавить тест для этого модуля, который нуждается в фикстуре магазина добавленной в БД. Смотря на файловую структуру тестов для shops модуля, мы можем сделать предположение, что фикстура магазина и код, который добавляет ее в БД уже есть в каком-то из тестов.

Проблема № 1 - Необходимо просмотреть все тесты данного модуля, для того, чтобы определить есть ли необходимый код для подготовки тестового окружения или нет.

Проблема № 2 - Проблема №1 влечет за собой дублирование кода в тестах, что существенно увеличивает их хрупкость и делает более сложным добавление новых тестов.

После титанических усилий мы все таки находим некий код, который добавляет фикстуру магазина, например:

public static function setUpShop() { $shop = $shops->createRow(self::$fixtures['shop']); $shop->save(); return $shop; }

Мы добавляем его вызов в тест, и должны не забыть удалить фикстуру из БД после окончания теста

Проблема № 3 - Необходимость "ручного" контроля очистки фикстур

Но в ходе написания тестов очень часто возникает необходимость подготовить несколько связанных сущностей в БД и тут возникает следующая проблема:

Проблема № 4 - Неявные зависимости между тест кейсами за счет перекрестного использования методов для подготовки БД

Решение

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

Для начала необходимо создать класс - контейнер для фикстур:

Класс наследуется от uglide\DbFixtureManager\ContainerAbstract:

В данном классе необходимо определить методы для подготовки окружения, в данном случае это будет setUpShop()

! Метод, который поднимает фикстуру обязательно должен регистрировать сборщик мусора (cleaner). Cleaner - это метод, который будет вызван автоматически для удаления поднятой фикстуры.

Также необходимо определить загрузчик контейнеров фикстур, например его можно определить в bootstrap.php:

Далее необходимо унаследовать абстрактный класс тест кейса, и реализовать метод получения объекта для работы с Бд

Все тест-кейсы с фикстурами будут наследоваться от этого класса

Как использовать в тестах:

Использование фикстур из контейнера

Как вы уже догадываетесь из заголовка, в данном менеджере фикстур есть возможность использовать фикстуры непосредственно из контейнера.

Предположим, у нас есть следующий контейнер с фикстурами:

Данную фикстуру мы можем использовать в тестах следующим образом:

Но зачем это, если можно просто вызвать в тесте статическую переменную контейнера?!

Работая с фикстурами через менеджер у вас есть возможность получать динамически созданные фикстуры:

Преимущества


All versions of db-fixture-manager with dependencies

PHP Build Version
Package Version
Requires php Version >=5.3.0
phpunit/phpunit Version 3.7.*
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package uglide/db-fixture-manager contains the following files

Loading the files please wait ....