2014-10-13 2 views
0

내가 behat 테스트를 추가하고 싶습니다 레거시 Symfony 2.0 프로젝트 (정확한 버전 2.0.11)가 있습니다. Symfony 2.0이기 때문에, 작곡가가 아닌 deps 벤더 시스템을 사용합니다. 나는 현재 Symfony 버전을 업그레이드하거나 작곡가로 전환 할 수있는 입장이 아닙니다.deps를 사용하여 symfony 2.0 프로젝트에서 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 설정을 사용하여 behat 설치하려고 시도 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 파일이 없습니다. Github의 Behat 태그를 살펴본 결과 2.1.3이 (실제로는 autoload.php.dist) 인 최신 버전이었습니다. 모든 이전 버전의 버전은 이 아니기 때문에 autoload.php.dist이 아니기 때문에이 경우라고 가정 했으므로).

그러므로 내 행동 버전 번호를 deps에서 v2.1.3으로 변경하고 공급 업체를 삭제 한 다음 다시 설치하십시오. behat 명령은 변경했다, 그래서 나는 달렸다 :

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 등의 올바른 버전 내가 그것을 작동하게하는 데 사용하는 것이 무엇인지 알고 있나요

:

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

는 지금 this error을 보았다 Symfony 2.0과 deps가 있습니까? 아니면 제가 놓친 다른 단계가 있습니다.

PS 나는 PHAR을 통해 behat를 실행하는 것으로 끝 맺었지만 (이 had other problems은 가치가 없어서 버렸다.) 그러나, 나는 표준 벤더를 설치하는 방법을 알고 싶어한다.

답변

0

나는 Symfony 버전을 업그레이드하거나 현재 작곡가로 전환 할 수 없습니다.

나는 당신이 말하는 것을 이해하지만 아래의 예는 당신에게 약간의 힌트를 줄 수 있습니다. 나는 그것이 조금 도움이되기를 바랍니다.

모든 Symfony2 프로젝트에 대해 내가 사용하고있는 것을 공유하고 있습니다. + 밍크 + 셀레늄

CONPOSER Behat : eveyone이 모든게의 동일한 버전을 사용하도록

당신은 특정 버전이 필요합니다.

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", 

BEHAT

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 

셀레늄 프로젝트에

다운로드. here, 페이지 중간에있는 2.43.1 버전을 다운로드하십시오.

실행을 : java -jar selenium-server-standalone-2.43.1.jar

CONTEXT 기능

mySymfonyProject/SRC/사이트/CommonBundle/기능/컨텍스트/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 
} 

TESTS

기능 파일을 가지고있을 때 이와 같이 실행할 수 있습니다 (이것은 한 번에 모두 실행됩니다). 자세한 내용은 behat doc을 참조하십시오) :

bin/behat @SiteCommonBundle