Symfony 2 功能测试

Symfony 2 Functional test

在我的一项功能测试中,我遇到了一个对我来说不太合乎逻辑的问题。

测试很简单,就是请求首页,搜索其中有某个class的元素

主页用于显示文章列表的博客。每篇文章可以有多个页面(一对多),每个页面都有自己的特色图片。

在主页上(在 twig 中)我执行 $article->getPages()->first()->getImageUrl()。

如果我使用相同的固定装置并从浏览器访问页面,所有内容都会按应有的方式显示,但是当我 运行 测试时它会抛出异常 "Could not access getImageUrl on unknown object",这让我觉得它不会从数据库中提取文章页面。

更奇怪的是,如果我在测试中直接查询数据库中的文章并遍历它们都有效的文章($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() ->清除();