adrien / fixtures-for-tests
一组用于测试用例以加载固定数据的特性。
v0.2.0
2020-04-02 12:30 UTC
Requires
- php: ^7.2
- doctrine/data-fixtures: ^1.3
Requires (Dev)
- doctrine/mongodb-odm: ^1.2
- doctrine/orm: ^2.6
- doctrine/phpcr-odm: ^1.4
- jackalope/jackalope: ^1.3
- jackalope/jackalope-doctrine-dbal: ^1.3
- phpunit/phpunit: ^8.1
- symfony/framework-bundle: ^4.2
This package is auto-updated.
Last update: 2024-09-13 19:21:31 UTC
README
一组用于测试用例的特性
安装
通过 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
请维护测试套件:如果您添加了一个功能,请证明新行为;如果您修复了一个错误,请确保没有回归。