在执行Behat上下文期间不会加载Doctrine注释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在执行Behat上下文期间不会加载Doctrine注释相关的知识,希望对你有一定的参考价值。

我使用Symfony 2.8和Behat 3.3。我在FeatureContext目录中有标准的project_root/features/bootstrap类。在场景执行之前我想要像这样清除DB:

    /**
     * @BeforeScenario
     */
    public function beforeScenario()
    {
        // use DoctrineCommonDataFixturesPurgerORMPurger
        $purger = new ORMPurger($this->em);
        $purger->purge();
    }

但是当我执行测试时,我收到错误:

类XXX中的注释“@Doctrine ORM Mapping Entity”不存在,或者无法自动加载。

我的behat.yml是:

default:
    suites:
        default:
          contexts:
            - FeatureContext:
                em: '@doctrine.orm.entity_manager'

    extensions:
        BehatSymfony2Extension:
          kernel:
            bootstrap: "vendor/autoload.php"
            env: "test"
            debug: "true"

composer.json自动加载部分:

"autoload": {
        "psr-4": {
            "": "src/"
        },
        "classmap": [
            "app/AppKernel.php",
            "app/AppCache.php"
        ]
    }   
答案

如果从behat.yml中删除行bootstrap: "vendor/autoload.php",一切都将按需要运行。

以上是关于在执行Behat上下文期间不会加载Doctrine注释的主要内容,如果未能解决你的问题,请参考以下文章

php 访问Behat 3中的其他上下文

BEHAT - 无法在浏览器中执行测试

Symfony 和 Doctrine 使迁移无效

在 onCreate() 期间通过 AsyncTask 加载数据

Symfony2 无法连接到 sqlite

Tomcat/Eclipse:在上下文重新加载期间禁用 HttpSession 序列化