1. Go to this page and download the library: Download uglide/db-fixture-manager library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
// Example 1
/**
* Самый простой случай - нам необходимо добавить в БД фикстуру,
* которая не используется после этого в тесте
* @fixture Shops::setUpShop
*/
public function testIndexAction()
{
// код теста
}
// Example 2
/**
* Добавляем в БД фикстуру,
* и результат выполнения метода setUpShop будем использовать в тесте
* @fixture $shop Shops::setUpShop
*/
public function testIndexAction()
{
// ....
$this->_fixture['shop']; // фикстура доступна по указанному имени в массиве $this->_fixtures
// ....
}
// Example 3
/**
* Добавляем в БД фикстуру, с помощью метода setUpShop,
* которому нужно передать определенные параметры
* знак "+" после названия метода обозначает,
* что в данный метод будет передана фикстура
* из дата-провайдера в качестве аргумента
* @fixture $shop Shops::setUpShop+
* @dataProvider shopDataProvider
*/
public function testIndexAction($fixtureSettings) // фикстура передаваемая дата-провайдером доступна как аргумент теста
{
// ....
$this->_fixture['shop']; // фикстура доступна по указанному имени в массиве $this->_fixtures
// ....
}
/**
* Стандартный дата-провайдер PHPUnit
*/
public function shopDataProvider()
{
return array('validTest' => array('resetTable' => false));
}
// Example 4
/**
* Добавляем в БД несколько фикстур,
* @fixture $shop Shops::setUpShop
* @fixture $user Users::setUpUser
*/
public function testIndexAction()
{
// ....
$this->_fixture['shop'];
$this->_fixture['user'];
// ....
}
//Example 5
/**
* Добавляем в БД несколько фикстур,
* с помощью нескольких методов.
* Обратите внимание на то, что методы
* получают различные данные из дата провайдера
* @fixture $shop Shops::setUpShop
* @fixture $user Users::setUpUser
* @dataProvider shopDataProvider
*/
public function testIndexAction()
{
// ....
$this->_fixture['shop'];
$this->_fixture['user'];
// ....
}
/**
* Стандартный дата-провайдер PHPUnit
*/
public function shopDataProvider()
{
return array(
'validTest' =>
array(
'setUpShop' => array('resetTable' => false), //эти данные будут переданы в Shops::setUpShop
'setUpUser' => array('id' => 100), // а эти в Users::setUpUser
)
);
}
use uglide\DbFixtureManager\ContainerAbstract;
class Shops_Fixtures_Container extends ContainerAbstract
{
/**
* Фикстуры должны быть добавлены в статическую
* переменную класса $fixtures
*/
public static $fixtures = array(
'shop' => array(
'id' => 1,
'alias' => 'testshop',
'name' => 'Test Shop',
'country_id' => 1,
'state_id' => 25,
'city_id' => 28
)
);
}
// Example 1
/**
* Указываем имя переменной,
* в которую будет записана фикстура
* и имя фикстуры со знаком $
* @fixture $superShop Shops::$shop
*/
public function testIndexAction()
{
// ....
// теперь мы можем использовать в тесте
// фикстуру
$this->_fixture['superShop'];
// ....
}
// Example 2
/**
* Если имя целевой переменной не указано явно,
* то фикстура будет доступна в массиве
* $this->_fixture по своему индексу
* из контейнера
* @fixture Shops::$shop
*/
public function testIndexAction()
{
// ....
// теперь мы можем использовать в тесте
// фикстуру
$this->_fixture['shop'];
// ....
}
use uglide\DbFixtureManager\ContainerAbstract;
class Shops_Fixtures_Container extends ContainerAbstract
{
/**
* Статическая фикстура
*/
public static $fixtures = array(
'shop' => array(
'id' => 1,
'alias' => 'testshop',
'name' => 'Test Shop',
'country_id' => 1,
'state_id' => 25,
'city_id' => 28
)
);
public function __construct(Zend_Db_Adapter_Abstract $dbAdapter)
{
parent::__construct($dbAdapter);
// генерируем фикстуру
self::$fixtures['someGeneratedFixture'] = $this->someShopFixtureGenerator();
}
// .......
}
/**
* Мы можем получить динамически созданную
* фикстуру в тесте
* @fixture $someGeneratedFixture Shops::$someGeneratedFixture
*/
public function testIndexAction()
{
// ....
$this->_fixture['someGeneratedFixture'];
// ....
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.