Установка поведения в проекте Symfony 2.0 с использованием deps — какие версии?

У меня есть устаревший проект Symfony 2.0 (точнее, версия 2.0.11), к которому я хотел бы добавить тесты поведения. Поскольку это Symfony 2.0, он использует систему поставщиков deps, а не композитор. В данный момент я не в состоянии обновить версию Symfony или переключиться на композитор.

Я попытался установить behat, используя следующие настройки deps:

[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, я получаю описанную проблему здесь:

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 В итоге я запустил behat через PHAR (хотя у этого были другие проблемы, поэтому я отказался от него как не стоит). Тем не менее, я действительно хочу знать, как это сделать с помощью стандартной установки поставщиков, поэтому этот пост.


person Sam    schedule 13.10.2014    source источник


Ответы (1)


В данный момент я не в состоянии обновить версию Symfony или переключиться на композитор.

Я понимаю, что вы говорите, но пример ниже может дать вам небольшую подсказку, я надеюсь! Надеюсь, это немного поможет.

Я делюсь тем, что использовал во всех своих проектах на Symfony2. Бехат+Норка+Селен

КОНПОЗИТОР:

Вам нужны определенные версии, чтобы все использовали одни и те же версии всего.

мойSymfonyProject/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 doc):

bin/behat @SiteCommonBundle
person BentCoder    schedule 13.10.2014