2012-09-09 4 views
2

이 Behat에 상당히 익숙하지 않고로드 블록에 빠졌습니다. 돌아 다니기. 나는 문서를보고, 내 직업처럼 인터넷 검색을하고, 컴퓨터를 화재 탈출구에서 벗어나지 않도록 최선을 다하고 있습니다.behhat.yml을 통해 sahi 확장 기능을 활성화하려고 할 때 Behat 2.4 업그레이드 문제 또는 "behat"아래의 인식 할 수없는 옵션 "extensions"- 오류가 발생했습니다.

저는 상당히 복잡한 프로젝트를 진행하고 있으며, 저는 그것을 설정 한 사람이 아닙니다. 그래서 나는 약간의 영역에서 약간의 길을 잃었습니다.

현재 Sahi 드라이버를 사용하려고합니다. 셀레늄이 테스트해야하는 동적 인 형태로 잘라 내기 때문이 아닙니다. 기본 셀렌 드라이버로 테스트를 잘 실행할 수는 있지만 폼 입력시 자바 스크립트 이벤트를 적절히 트리거하지 않기 때문에 테스트가 실패합니다. 특히, 해당 링크에서 다루는 해결 방법을 사용할 수 있지만 브라우저를 집중해야합니다. 즉, 테스트가 소스 또는 xvfb가있는 젠킨스를 통해 실행될 때 실패합니다.

나는 이것이 Sahi 드라이버를 사용하여 해결하려고하는 나의 큰 문제이기 때문에이 모든 것을 설명하고 있습니다. 어느 날 제공 :

내 bahat.yml에서 문서가 말하는 방법을 특정 프로필에 대한 Sahi 드라이버를 활성화하려고하면 무엇을 얻을
[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException] 
Unrecognized options "extensions" under "behat" 

.

여기에 기본 프로필이고 나는 현재 내 behat.yml에서 함께 일하고 있어요 프로파일은 (약간 대중 소비를 위해 수정) :

default: 
     paths: 
      features: 'features' 
      bootstrap: '%behat.paths.features%/bootstrap' 

    sahi: 
     extensions: 
      Behat\MinkExtension\Extension: 
       sahi: ~ 
     context: 
      class: 'FeatureContext' 
      parameters: 
       environment: 'staging' 
       mink: 'sahi' 

FWIW, 테스트가 나는 ssh를 VM을에 있습니다 - 나는의 초점에서 브라우저를 계속 가정 (에 X는 다음

$ behat --tags @test_name_tag --profile=sahi 

나는 기본 셀레늄 드라이버와 @javascript 태그를 사용하고, 브라우저가 팝업 사용하여 테스트를 실행하고 테스트를 실행하고 통과 코스). 나는 그 아마 과잉 또는 필요하지 중 하나입니다 추측하고있어 비록 내 MinkContext.php, EnvironmentContext.php 및 FeatureContext.php에 use Behat\Mink\Driver\SahiDriver;을 추가 한

{ 
     "require": { 
       "behat/behat": "2.4.*@stable", 
       "behat/mink": "[email protected]", 
       "behat/mink-extension": "*", 
       "behat/mink-selenium2-driver": "*", 
       "behat/mink-sahi-driver": "*" 
     } 
    } 

:

나는 작곡가를 사용하여 추가 드라이버를 설치 . 그러나이 시점에서 차이를 만드는 것 같지 않습니다. 나는 그것이 있든 없든 같은 오류를 낳는다. 나는 어쩌면 exensions 어떤 이유로 도움이 될 수 있습니다라는 기능/부트 스트랩에 디렉토리를 추가 생각했다

<?php 

    return 
    array(
     'default_session' => 'sahi', 
     'sahi' => array(
      'capabilities' => array(
       'browserName' => 'firefox', 
       'browserVersion' => 7, 
      ), 
     ), 
    ); 

:

는 또한 기능/부트 스트랩/밍크에 사는 sahi.php을 추가했다. 심지어 거기에 sahi.php라는 파일을 붙입니다. 그것은별로 도움이되지 못했습니다.

나는 모든 것을 다 다루고 있다고 생각합니다. 어떤 도움을 주셔서 미리 감사드립니다. 다른 곳에서 다루어지면, 저에게 직접 안내해주십시오. 왜냐하면 나는 수많은 시간을 보냈고 나를 돕는 어떤 것도 찾지 못했기 때문입니다.

는 업데이트 :

나는 behat, 밍크와 오이의 이전 버전을 제거하고 2.4을 설치, 등 내가 2.3 Behat에서 마이그레이션 "을 통해 자신의 길을 만들어 왔습니다이 https://lestbddphp.wordpress.com/2012/08/31/behatcomposer/

에 따라 2.. 워드 프로세서에 4 "(죄송합니다, SO 나를 더 이상 링크를 게시 할 수 있지만, 문서 Behat 공식에의하지 않습니다.)

composer.json 내 :

{ 
    "require": { 
    "behat/behat": "2.4.*@stable", 
    "behat/mink": "[email protected]", 
    "behat/mink-goutte-driver": "*", 
    "behat/symfony2-extension": "*", 
    "symfony/class-loader": "2.1.*", 
    "symfony/form": "2.1.*", 
    "symfony/validator": "2.1.*", 
    "behat/mink-selenium-driver": "*", 
    "behat/mink-selenium2-driver": "*", 
    "behat/mink-extension": "*", 
    "behat/mink-sahi-driver": "*" 
    }, 
    "minimum-stability": "dev", 
    "config": { 
    "bin-dir": "bin/" 
    } 
} 

내가 내 behat.yml 파일을 이동 . 나는 그게 내가 그냥 문서에 주어진 예에 의해 갈 필요가 무엇 완전히 확실하지 않다하지만

default: 
    paths: 
     features: 'features' 
     bootstrap: '%behat.paths.features%/bootstrap' 
    extensions: 
     Behat\Symfony2Extension\Extension: 
     mink_driver: true 
     kernel: 
      env: test 
      debug: true 
     Behat\MinkExtension\Extension: 
     default_session: symfony2 
     sahi: ~ 

:. 지시에 따라 프로젝트의 루트, 나는 내 default 프로필을 업데이트했습니다.

vendor/autoload.php 대체하여 업데이트 된 require_oncerequire과 :

<?php 

// autoload.php generated by Composer 

require __DIR__ . '/composer' . '/autoload_real.php'; 

return ComposerAutoloaderInit::getLoader(); 

하지만 파일이 example code in the docs 다르기 때문에 나는이에 의해 조금 혼란 스러워요. 여기에 문서의 줄을 추가하려면 이미있는 줄 대신에 그냥로드하는 것이 좋습니다. (나는 시도했다. 바베드했다.) 나는 완전히 밀집되어 있는가, 아니면 여기서 혼란 스럽거나 오도하는 말인가? 이 작업이 올바르게 수행 되었습니까?

I 앞서 언급 된 바와 같이, I가 features/bootstrap 3 개 컨텍스트 파일 가지고 CLI를 통해 테스트를 실행할 때

FeatureContext.php 
EnvironmentContext.php 
MinkContext.php 

, 난 그것을 --profile를 통과하고 그것 behat.yml에 적합한 프로파일을 사용한다. 거의 모든 프로파일에서 FeatureContext이 사용됩니다.

context: 
     class: 'FeatureContext' 

FeatureContext는 내가 말할 수있는 것과, EnvironmentContextMinkContext 가져옵니다. 이론적으로 모든 것이 거기에서 작동해야합니다.

오직 그렇지 않습니다. 나는 모든 심포니 물건을 추가하기 전에

$ bin/behat --profile=sahi 

    [ReflectionException]   
    Class AppKernel does not exist 

,이 얻고 있었다 : 나는 작곡가를 통해 심포니 물건을 추가하는 이유

Warning: require(Behat\Symfony2Extension\Extension): failed to open stream: No such file or directory in /path/to/project/vendor/behat/behat/src/Behat/Behat/Extension/ExtensionManager.php on line 112 

Fatal error: require(): Failed opening required 'Behat\Symfony2Extension\Extension' (include_path='/usr/share/pear:/usr/share/php:/usr/share/git core/templates/hooks:.') in /path/to/project/vendor/behat/behat/src/Behat/Behat/Extension/ExtensionManager.php on line 112 

입니다. 또한 아마도 노트의

: 내가 예상 할 수있는 것 같다

Notice: Undefined index: environment in /home/lbaron/development/BeHat-Functional/features/bootstrap/FeatureContext.php on line 43 

Warning: include(/path/to/project/features/bootstrap/environment/.php): failed to open stream: No such file or directory in /path/to/project/features/bootstrap/FeatureContext.php on line 44 

Warning: include(): Failed opening '/path/to/project/features/bootstrap/environment/.php' for inclusion (include_path='/usr/share/pear:/usr/share/php:/usr/share/git-core/templates/hooks:.') in /path/to/project/features/bootstrap/FeatureContext.php on line 44 

Catchable fatal error: Argument 1 passed to EnvironmentContext::__construct() must be an array, boolean given, called in /path/to/project/features/bootstrap/FeatureContext.php on line 44 and defined in /path/to/project/features/bootstrap/EnvironmentContext.php on line 27 

: 나는 작곡가를 통해 심포니 물건을 설치하기 전에, 그것을 --profile을 통과하는 것을 잊었다 때, 나는이 있어요.

저는 이제 손실되었습니다. 아이디어?

나는 그것을 알아낼 수 있는지 알아보기 위해 끊임없이 노력할 것이지만, 어떤 아이디어/입력이라도 크게 감사 할 것입니다. 다시

업데이트 : behat의

Catchable fatal error: Argument 2 passed to Symfony\Component\BrowserKit\Client::__construct() must be an instance of Symfony\Component\BrowserKit\History, array given, called in /usr/share/pear/mink/src/Behat/Mink/Behat/Context/MinkContext.php on line 163 and defined in /home/lbaron/development/BeHat-Functional/vendor/symfony/browser-kit/Symfony/Component/BrowserKit/Client.php on line 52 

현재 상태 :

YML에서 확장 섹션을 제거 나에게이 있습니다.yml :

default: 
    paths: 
     features: 'features' 
     bootstrap: '%behat.paths.features%/bootstrap' 
    formatter: 
     parameters: 
      language: 'en' 
    extensions: 
     Behat\MinkExtension\Extension: 
      sahi: ~ 
      goutte: ~ 

답변

1

이전 버전 2.4 (현재 버전)보다 오래된 버전을 실행 중입니다. 나는 당신이 사용하는 명령어가 "bin/behat"대신에 "behat"이기 때문에 알 수있다. 이전 버전은 아키텍처가 다르며 확장 프로그램을 사용하지 않았습니다. behat.org 웹 사이트의 문서는 모두 새로운 2.4 버전 용이며, 아는 한 더 이상 사용 가능한 이전 버전에 대한 설명서가 없습니다. 당신은 당신의 버전을 2.4로 업그레이 드해야합니다,이 방법에 대한 가이드가 있습니다 here

+0

아! 고맙습니다! 그런 느낌이 들었습니다. 그렇게하고 결과로 돌아올 것입니다. – lmb

+0

업그레이드되어 더 많은 문제가 발생했습니다. 원본 게시물을 세부 정보로 업데이트했습니다. 감사. – lmb