adrien/fixtures-for-tests

一组用于测试用例以加载固定数据的特性。

v0.2.0 2020-04-02 12:30 UTC

This package is auto-updated.

Last update: 2024-09-13 19:21:31 UTC


README

Latest Version Software License Build Status Code Coverage Quality Score

一组用于测试用例的特性

安装

通过 Composer

$ composer require adrien/fixtures-for-tests

使用方法

  • 使用 FixtureLoaderTrait 添加固定数据加载快捷方法。
  • 在扩展 KernelTestCase 的类中使用 FixtureAttachedTrait 以在每个测试前自动加载固定数据。

使用 PHPUnit + Symfony 的 KernelTestCase 的示例

<?php

namespace SomeNamespace\Test;

use Adrien\FixturesForTests\FixtureAttachedTrait;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;

class SomeFeatureTest extends KernelTestCase
{
    use FixtureAttachedTrait;

    public function testItDoesWhatIsExpected(): void
    {
        $dummy = $this->fixtureRepository->getReference('my_dummy');
        // ...
    }
}
<?php

namespace SomeNamespace\Test;

use App\Entity\SomeEntity;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Persistence\ObjectManager;

class SomeFeatureFixture extends AbstractFixture
{
    public function load(ObjectManager $manager): void
    {
        $dummy = new SomeEntity();
        $dummy->setSomething('something');

        $manager->persist($dummy);
        $manager->flush();

        $this->referenceRepository->addReference('my_dummy', $dummy);
    }
}

使用 Behat (带有 PHPCR) 的示例

<?php

namespace SomeNamespace\Behat;

use Adrien\FixturesForTests\FixtureLoaderTrait;
use Behat\Behat\Context\Context;
use Doctrine\ODM\PHPCR\DocumentManager;

class FeatureContext implements Context
{
    use FixtureLoaderTrait;

    /** @BeforeScenario */
    public function prepareScenarioFixtures()
    {
        $persistenceManager = new DocumentManager(/*...*/);
        $this->loadFixture($persistenceManager, new SomeScenarioFixture());
    }
}
<?php

namespace SomeNamespace\Behat;

use App\Entity\SomeEntity;
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Persistence\ObjectManager;

class SomeFeatureFixture implements FixtureInterface
{
    public function load(ObjectManager $manager): void
    {
        $dummy = new SomeEntity();
        $dummy->setSomething('something');
        
        $manager->persist($dummy);
        $manager->flush();
    }
}

贡献和测试

$ composer update --prefer-lowest --prefer-source
$ ./vendor/bin/phpunit

请维护测试套件:如果您添加了一个功能,请证明新行为;如果您修复了一个错误,请确保没有回归。