Symfony 2功能测试

时间:2015-01-28 15:24:21

标签: php symfony phpunit functional-testing

我在一次功能测试中遇到了一个对我没有太多逻辑的问题。

测试非常简单,它只是请求主页,并搜索其中包含某个类的元素。

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

在主页(在树枝上)我做$ 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 个答案:

答案 0 :(得分:0)

我发现清除实体管理器使我的测试工作......所以我只是添加了self :: $ client-> getContainer() - > get('doctrine') - > getManager() - >清除();

相关问题