我在一次功能测试中遇到了一个对我没有太多逻辑的问题。
测试非常简单,它只是请求主页,并搜索其中包含某个类的元素。
主页适用于显示文章列表的博客。每篇文章都可以有多个页面(一对多),每个页面都有自己的特色图片。
在主页(在树枝上)我做$ 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);
}
提前致谢,
答案 0 :(得分:0)
我发现清除实体管理器使我的测试工作......所以我只是添加了self :: $ client-> getContainer() - > get('doctrine') - > getManager() - >清除();