stfalcon/fwdays — pull request #79 by fre5h (2012-11-28 11:36:05+00:00)
Title: Refactoring fixtures

Зарефакторив фікстури, щоб вони юзали DependentFixtureInterface.
Всі фічі проходять.
Але є один нюанс. Зараз все ж таки потрібно писати всю пачку фікстур при їх загрузці в FeatureContext:
```
/**
* @BeforeScenario
*/
public function beforeScen()
{
$loader = new Loader();
$loader->addFixture(new \Stfalcon\Bundle\EventBundle\DataFixtures\ORM\LoadEventData());
$loader->addFixture(new \Stfalcon\Bundle\EventBundle\DataFixtures\ORM\LoadNewsData());
$loader->addFixture(new \Stfalcon\Bundle\EventBundle\DataFixtures\ORM\LoadPagesData());
$loader->addFixture(new \Stfalcon\Bundle\EventBundle\DataFixtures\ORM\LoadSpeakerData());
$loader->addFixture(new \Stfalcon\Bundle\EventBundle\DataFixtures\ORM\LoadReviewData());
$loader->addFixture(new \Stfalcon\Bundle\PaymentBundle\DataFixtures\ORM\LoadPaymentData());
$loader->addFixture(new \Stfalcon\Bundle\EventBundle\DataFixtures\ORM\LoadTicketData());
$loader->addFixture(new \Stfalcon\Bundle\SponsorBundle\DataFixtures\ORM\LoadSponsorData());
$loader->addFixture(new \Stfalcon\Bundle\SponsorBundle\DataFixtures\ORM\LoadEventSponsorData());
$loader->addFixture(new \Stfalcon\Bundle\SponsorBundle\DataFixtures\ORM\LoadCategoryData());
$loader->addFixture(new \Application\Bundle\UserBundle\DataFixtures\ORM\LoadUserData());
```

Тут половину можна забрати, так як є залежності, але, щоб це зробити, потрібно дописати ще один метод, який розрулює загрузку залежних фікстур. Ось цей
https://github.com/liip/LiipFunctionalTestBundle/blob/master/Test/WebTestCase.php#L306

На МФБ це зроблено так: цей метод винесений в BaseFeatureContext, всі інші контексти наслідють базовий і мають доступ до цього методу.

Але ти колись казав, що не хочеш, щоб всі контексти залежали від базового. Тому тут потрібно вирішити як бути:

1. лишати як є
2. робити базовий контекст з цим методом
3. додавати цей метод в кожний контекст де потрібно