使用 deps 在 Symfony 2.0 项目上安装 behat - 什么版本?

问题描述 投票:0回答:1

我有一个遗留的 Symfony 2.0 项目(准确地说是版本 2.0.11),我想向其中添加行为测试。 由于它是 Symfony 2.0,因此它使用

deps
供应商系统而不是 Composer。 我目前无法升级 Symfony 版本或切换到 Composer。

我尝试使用以下 deps 设置安装 behat:

[Mink]
    target=/Behat/Mink
    git=git://github.com/Behat/Mink.git
    version=v1.3.3

[MinkBundle]
    target=/Behat/MinkBundle
    git=git://github.com/Behat/MinkBundle.git

[BehatBundle]
    target=/Behat/BehatBundle
    git=git://github.com/Behat/BehatBundle.git

[Gherkin]
    target=/Behat/Gherkin
    git=git://github.com/Behat/Gherkin.git
    version=v2.1.1

[Behat]
    target=/Behat/Behat
    git=git://github.com/Behat/Behat.git
    version=v2.3.5

[Goutte]
    target=/Goutte
    git=git://github.com/fabpot/Goutte.git

(是的,我知道 BehatBundle 等已经过时了,但考虑到我正在使用 deps 和 sf2.0,看起来我需要这些过时的版本。)

当我运行

vendor/Behat/Behat/bin/behat
时,我会得到描述的问题here

PHP Warning:  require_once(behat/autoload.php): failed to open stream: No such file or directory in /home/sam/wo-code/PersonaBubble/vendor/Behat/Behat/bin/behat on line 23
PHP Fatal error:  require_once(): Failed opening required 'behat/autoload.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/sam/wo-code/PersonaBubble/vendor/Behat/Behat/bin/behat on line 23

我意识到 behat 2.3.5 实际上没有

autoload.php
文件。 我查看了 Behat 在 Github 上的标签,发现 2.1.3 是最新版本,有一个
autoload.php
(实际上是
autoload.php.dist
,尽管每个早期版本也有
autoload.php.dist
而不是
autoload.php
,所以我认为就是这样)。

因此,我将

deps
中的行为版本号更改为
v2.1.3
,删除了我的供应商并重新安装。 behat 命令随后发生了变化,所以我运行:

php vendor/Behat/Behat/bin/behat.php

我现在看到了这个错误

PHP Fatal error:  Class 'Symfony\Component\Console\Application' not found in /home/sam/wo-code/PersonaBubble/vendor/Behat/Behat/src/Behat/Behat/Console/BehatApplication.php on line 26

有谁知道我应该使用什么正确的 behat 版本来让它与 Symfony 2.0 和 deps 一起工作? 或者我还缺少其他一些步骤。

PS 我最终通过 PHAR 运行行为(尽管这还有其他问题所以我放弃了它,因为不值得)。 然而,我真的想知道如何通过标准供应商安装来做到这一点,因此这篇文章。

behat symfony2
1个回答
0
投票

我无法升级 Symfony 版本或切换到 目前作曲家。

我明白你所说的,但我希望下面的例子可能会给你一些提示!我希望它能有点帮助。

我正在分享我在所有 Symfony2 项目中使用的内容。贝哈特+水貂+硒

构想者:

您需要某些版本,以便每个人都使用相同版本的所有内容。

mySymfonyProject/composer.json:

"require": {
    "behat/behat": "2.5.*@stable",
    "behat/behat-bundle": "1.0.0",
    "behat/symfony2-extension": "1.1.2",
    "behat/mink": "1.5.0",
    "behat/mink-extension": "~1.3",
    "behat/mink-selenium2-driver": "1.1.1",
    "behat/mink-goutte-driver": "1.0.9"
},
"config": {
    "bin-dir": "bin"
},
"minimum-stability": "dev",

行为

mySymfonyProject/behat.yml:

default:
    context:
        class: FeatureContext
    extensions:
        Behat\Symfony2Extension\Extension:
            mink_driver: true
            kernel:
                env: test
                debug: true
        Behat\MinkExtension\Extension:
            base_url: 'http://mysymfonyproject.local/app_test.php/'
            javascript_session: selenium2
            browser_name: firefox
            goutte: ~
            selenium2: ~
    paths:
        features: %behat.paths.base%/src
        bootstrap: %behat.paths.features%/Context

下载到您的项目中。它是这里确保您下载的是页面中间的2.43.1版本。

运行它:

java -jar selenium-server-standalone-2.43.1.jar

上下文功能

mySymfonyProject/src/Site/CommonBundle/Features/Context/FeatureContext.php

<?php

namespace Site\CommonBundle\Features\Context;

use Behat\MinkExtension\Context\MinkContext;
use Behat\Symfony2Extension\Context\KernelAwareInterface;
use Symfony\Component\HttpKernel\KernelInterface;

class FeatureContext extends MinkContext implements KernelAwareInterface
{
    /**
     * Hold Symfony kernel object.
     *
     * @var object Kernel Object.
     */
    protected $kernel;

    /**
     * Helps to use doctrine and entity manager.
     *
     * @param KernelInterface $kernelInterface Interface for getting Kernel.
     */
    public function setKernel(KernelInterface $kernelInterface)
    {
        $this->kernel = $kernelInterface;
    }

    //And your own methods
}

测试

当您有功能文件时,您可以像这样运行它们(这会一次性运行。有关更多信息,请阅读 behat 文档):

bin/behat @SiteCommonBundle
© www.soinside.com 2019 - 2024. All rights reserved.