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();

Другие вопросы по тегам