Symfony 2 Функциональный тест
Я столкнулся с проблемой, которая не слишком логична для меня в одном из моих функциональных тестов.
Тест довольно прост, он просто запрашивает домашнюю страницу и ищет элемент с определенным классом в нем.
Домашняя страница предназначена для блога, который отображает список статей. И каждая статья может иметь несколько страниц ("один ко многим"), каждая со своим изображением.
На домашней странице (в ветке) я делаю $article->getPages()->first()->getImageUrl().
Если я использую те же приборы и получаю доступ к странице из браузера, все отображается так, как должно, но при запуске теста выдается исключение "Не удалось получить доступ к getImageUrl для неизвестного объекта", что заставляет меня думать, что статья не тянет страницы из БД.
Чтобы сделать это еще более странным, если я запрашиваю у себя базу данных для статей непосредственно в тесте и перебираю статьи, с которыми они все работают ($article->getPages()->first()->getImageUrl()). Только при использовании вызова self::$client->request() это не работает.
Я проверил фикбл, я даже добавил явный innerJoin() в построитель запросов и вручную проверил, что база данных имеет правильные данные.
Более того, у меня есть другие функциональные тесты, которые загружают свои собственные приборы, и все они работают, кроме этого.
Это код моего теста ниже. Сбой как при запуске, так и при выполнении всего набора тестов.
public function testSocialBoxPositionWithFeatured()
{
self::runCommand('h4cc_alice_fixtures:load:files --drop src/SNN/AdminBundle/Fixtures/Nelmio.yml');
$crawler = self::$client->request('GET', '/'); //go to homepage
$classes = $crawler
->filter('.postsContainer > .col-md-4')
->eq(5)
->children()
->first()
->attr("class");
$this->assertContains("socialBox", $classes);
}
Заранее спасибо,
1 ответ
Я обнаружил, что очистка менеджера сущностей делает мой тест работоспособным... поэтому я просто добавил self::$client->getContainer()->get('doctrine')->getManager()->clear();