2012-06-06 15 views
9

Podążałem za tym przewodnikiem (i zainstalowałem wszystko przez kompozytora): http://docs.behat.org/cookbook/behat_and_mink.html i próbuję uzyskać Behat + Mink działa, ale za każdym razem gdy próbuję uruchomić bin/behat, pojawia się następujący błąd:Próbuję zmusić Mink do pracy z Behatem

PHP Fatal error: Call to a member function getSession() on a non-object in vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php on line 80 

to wiersz kodu:

return $this->getMink()->getSession($name); 

więc z jakiegoś powodu atrybut norek jest pusty, ale nie mam pojęcia dlaczego.

Mój plik .feature jest dokładnie taka sama jak w przewodniku, klasa FeatureContext jest również z przewodnikiem:

use Behat\Behat\Context\ClosuredContextInterface, 
    Behat\Behat\Context\TranslatedContextInterface, 
    Behat\Behat\Context\BehatContext, 
    Behat\Behat\Exception\PendingException; 
use Behat\Gherkin\Node\PyStringNode, 
    Behat\Gherkin\Node\TableNode;  

use Behat\MinkExtension\Context\MinkContext; 

/** 
* Features context. 
*/ 
class FeatureContext extends MinkContext 
{ 

} 

i mój sprzedawca/behat/norki plik/behat.yml zawiera:

context: 
    extensions: 
    Behat\MinkExtension\Extension: 
     base_url: 'http://en.wikipedia.org/' 
     goutte: ~ 
     selenium2: ~ 

Próbowałem również, aby moja klasa rozszerzyć BehatContext, a następnie wywołać useContext, ale to daje mi ten sam błąd. Wydaje się, że Behat działa właśnie z tym, że Mink produkuje ten fatalny błąd i nie mam pojęcia, jak to naprawić.

Odpowiedz

8

To dlatego należy skopiować plik do your/project/root/behat.ymlvendor/behat/behat/behat.yml.dist zamiast edycję pliku w katalogu dostawcy i dodać extesions do sekcji default.

A oto jak to wygląda:

default: 
    extensions: 
    Behat\MinkExtension\Extension: 
     base_url: http://lunch-time/app_dev.php 
     goutte: ~ 
     selenium2: ~ 

    paths: 
    features: features 
    bootstrap: features/bootstrap 

annotations: 
    paths: 
    features: features/annotations 

closures: 
    paths: 
    features: features/closures 
+0

Zobacz także http://stackoverflow.com/a/28173700/425204 dla dodatkowych poprawek dla tego błędu – spiritoo

0

byłem w obliczu podobnego problemu. Musimy powiedzieć Symfony, aby zainicjował obiekt.

Kopię naprawiono po dodaniu pod domyślnymi ustawieniami> suites> my_suite.

contexts: [Behat\MinkExtension\Context\MinkContext] 

Oto jak wygląda mój nowy plik behat.yml.

default: 
    suites: 
     my_suite: 
      type: symfony_bundle 
      bundle: AcmeProjectManagerBundle 
      contexts: [Behat\MinkExtension\Context\MinkContext] 
extensions: 
    Behat\Symfony2Extension: ~ 
    Behat\MinkExtension: 
     base_url: http://en.wikipedia.org 
     goutte: ~ 
     selenium2: ~ 
     sessions: 
      default: 
       symfony2: ~ 
Powiązane problemy