Я столкнулся с проблемой, которая не слишком логична для меня в одном из моих функциональных тестов.
Тест довольно прост, он просто запрашивает домашнюю страницу и ищет элемент с определенным классом в нем.
Домашняя страница предназначена для блога, который отображает список статей. И каждая статья может иметь несколько страниц («один ко многим»), каждая со своим изображением.
На домашней странице (в ветке) я делаю $ 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);
}
Заранее спасибо,
Я обнаружил, что очистка менеджера сущностей делает мой тест работоспособным … поэтому я просто добавил self :: $ client-> getContainer () -> get (‘doctrine’) -> getManager () -> clear ();
Других решений пока нет …