使用Codeception对Symfony进行功能测试会显示环境实例错误

时间:2017-11-14 12:25:05

标签: symfony functional-testing codeception

我尝试使用各种工具将功能测试引入旧代码库,其中一个是Codeception(2.2.0)。验收测试通过basic log in scenario

public function login($name, $password)
{
    $I = $this;
    $I->amOnPage('/login');
    $I->submitForm('.loginform', array(
        '_username' => $name,
        '_password' => $password
    ));
    $I->see('User', '.navbar');
}

然而,当我尝试对同一场景进行功能测试时,它失败了

  

[例外]环境实例已设置

查看堆栈跟踪,它来自正在注册实例的侦听器:

public function onKernelRequest() {
    $this->getContainer()->get('environment');
}

导致config.yml中的服务:

environment:
    class: MyApp\Environment
    calls:
        - [ setContainer, [ @service_container ] ]

指向班级:

class Environment {


public function __construct() {
    self::setInstance($this);
   }


public static function setInstance(Environment $environment) {
    if (null !== self::$instance) {
        throw new \Exception('environment instance is already set');
    }
    self::$instance = $environment;
}

我如何才能最好地了解如何通过功能测试删除错误?代码是反模式还是需要重构?或者我的Codeception配置有问题吗?

class_name: FunctionalTester
modules:
    enabled:
        - Symfony2:
            app_path: 'app'
            var_path: 'app'
        - Doctrine2:
            depends: Symfony2
        - \Helper\Functional
        - Asserts
        - Sequence

如果您需要我在此处添加更多信息,请与我们联系。

更新

我找到this answer并通过从Symfony模块切换到PhpBrowser,测试通过了。但是,最初的问题 - 如何使用Symfony模块运行功能测试 - 仍然存在。

0 个答案:

没有答案