在Symfony 2中加载功能测试的Fixtures:调用未定义的方法MyControllerTest :: loadFixtures())

时间:2015-05-15 14:29:46

标签: symfony doctrine-orm functional-testing fixtures

我试图找到在Symfony 2.6中加载我的灯具以运行功能测试的简单方法。这是一个相当普遍的问题,并且已被问过几次,但到目前为止我找到的答案并没有达到我的期望:

  • Some依赖于在功能测试中运行命令行。
  • Other手动运行每个已定义的灯具,然后负责创建和删除数据库。

在这两种情况下(使用语句和手动代码)都有很多开销,我认为这是非常标准的任务。

另一方面,这些相同的帖子推荐LiipFunctionalTestBundle。为此,这是我在安装说明中阅读的内容:

  

编写fixture类并从bundle中调用loadFixtures()方法   Test \ WebTestCase类。请注意,loadFixtures()将在加载灯具之前从数据库中删除内容。“

所以我试过......

namespace AppBundle\Test\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class MyControllerTest extends WebTestCase
{
    public function setUp()
    {
        $classes = array(
                'AppBundle\DataFixtures\LoadUserData',
        );
        $this->loadFixtures($classes);
    }
    ...
}

没有运气:

  

在第15行的/gitrepos/myproject/src/AppBundle/Tests/Controller/MyControllerTest.php中调用未定义的方法AppBundle \ Tests \ Controller \ MyControllerTest :: loadFixtures()

静态调用会产生相同的错误......

self:loadFixtures($classes);

我真的觉得我错过了很明显的东西。任何人都可以让我回到正轨?

1 个答案:

答案 0 :(得分:2)

我可以看到你正在使用

Oro\Bundle\TestFrameworkBundle\Test\WebTestCase

作为基类,而我认为你应该使用

Liip\FunctionalTestBundle\Test\WebTestCase

能够调用此方法。