1. Go to this page and download the library: Download xi/fixtures 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/ */
use Xi\Fixtures\FixtureFactory;
use Xi\Fixtures\FieldDef;
abstract class TestCase extends \PHPUnit_Framework_TestCase
{
protected $factory;
public function setUp()
{
// ... (set up a blank database and $this->entityManager) ...
$this->factory = new FixtureFactory($this->entityManager);
$this->factory->setEntityNamespace('What\Ever'); // If applicable
// Define that users have names like user_1, user_2, etc.,
// that they are not administrators by default and
// that they point to a Group entity.
$this->factory
->define('User')
->sequence('username', 'user_%d')
->field('administrator', false)
->reference('group', 'Group');
// Define a Group to just have a unique name as above.
// The order of the definitions does not matter.
$this->factory
->define('Group')
->sequence('name', 'group_%d');
// If you want your created entities to be saved by default
// then do the following. You can selectively re-enable or disable
// this behavior in each test as well.
// It's recommended to only enable this in tests that need it.
// In any case, you'll need to call flush() yourself.
$this->factory->persistOnGet();
}
}
class UserServiceTest extends TestCase
{
// ...
public function testChangingPasswords()
{
$user = $this->factory->get('User', array(
'name' => 'John'
));
$this->service->changePassword($user, 'xoo');
$this->assertSame($user, $this->service->authenticateUser('john', 'xoo'));
}
}
class SomeTest extends TestCase
{
public function setUp()
{
parent::setUp();
$this->org = $this->factory->getAsSingleton('Organization');
}
public function testSomething()
{
$user1 = $this->factory->get('User');
$user2 = $this->factory->get('User');
// now $user1->getOrganization() === $user2->getOrganization() ...
}
}
$factory
->define('User')
->referenceMany('group', 'Group', 'users', 3);
// 'group' is the field in User
// 'Group' is the target entity
// 'users' is the inverse field in 'Group'
// 3 is the default number of 'Group' entities to generate.
$user = $factory->get('User');