2012-06-06 10 views
9

He estado siguiendo esta guía (e instalado todo a través del compositor): http://docs.behat.org/cookbook/behat_and_mink.html y estoy intentando hacer funcionar Behat + Mink, pero cada vez que intento y ejecuto bin/behat recibo el siguiente error:Luchando para conseguir que Mink trabaje con Behat

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 

Esa línea de código es:

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

Así que por alguna razón el atributo de visón está vacía, pero no tengo idea de por qué.

Mi archivo .feature es exactamente el mismo que el de la guía, la clase FeatureContext es también de la guía:

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 
{ 

} 

y mi vendedor/Behat/visón archivo/behat.yml contiene:

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

También intenté hacer que mi clase extienda BehatContext y luego invocar useContext, pero eso me da el mismo error. Behat parece funcionar, es algo con lo que Mink produce ese error fatal y no tengo idea de cómo solucionarlo.

Respuesta

8

Esto se debe a que usted debe copiar el archivo a vendor/behat/behat/behat.yml.distyour/project/root/behat.yml, en lugar de editar el archivo en el directorio de proveedores y añadir extesions a la sección default.

Y aquí es lo que parece:

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

Véase también http://stackoverflow.com/a/28173700/425204 para soluciones adicionales a este error – spiritoo

0

que estaba frente a un problema similar. Necesitamos decirle a Symfony que inicialice el objeto.

La mina se arregló después de agregarla en la configuración predeterminada> suites> my_suite.

contexts: [Behat\MinkExtension\Context\MinkContext] 

Así es como se ve mi nuevo 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: ~ 
Cuestiones relacionadas