SituationBehat 3 innerhalb symfony2.4 (Lehre Zugang)
Ich will von jetzt an in meinen symfony Projekten BDD und Behat verwenden. Das aktuelle Projekt ist SF2.4, und ich bemühe mich, Behat 3 zum Laufen zu bringen. Ich verwende the latest doc concerning behat3, wie von jakub in this post empfohlen.
Ausgabe
Behat 3 scheint gut zu funktionieren. Um jedoch wirklich starten zu können, muss ich Zugriff auf den Kernel haben (Container, Doktrin, etc ...). Ich habe es mit meinem Projekt probiert, ein Testprojekt, das ein Beispiel für Behat darstellt. Jedoch unter Verwendung von $ this-> Container() $ this-> Kernel-> getContainer() immer eine 'anhängige Ausnahme' wirft (Code stoppt bei iShouldGet Schritt):
public function iShouldGet(PyStringNode $string)
{
//$container = $this->kernel->getContainer();
//$container = $this->getContainer();
//$doctrine = $this->getContainer()->get('doctrine');
if ((string) $string !== $this->output) {
throw new Exception(
"Actual output is:\n" . $this->output
);
}
}
Ich habe versucht, die gleiche Behat zu erstellen 'ls' Test innerhalb AcmeDemoBundle:
|Acme
|Demo
|Features
|Context/FeatureContext.php
ls.feature
aber es löst einen Fehler:
[Behat\Testwork\Tester\Exception\WrongPathsException]
No specifications found at path(s) `@AcmeDemoBundle`.
Lösung
Es könnte an der Verwendung von Behat3 liegen, aber ich bin mir nicht sicher. Irgendein Hinweis, warum dieses Problem auftritt/wie man es löst? Im Allgemeinen werden gute Ratschläge zur Integration von behat in das symfony2 (2.4) Projekt sehr geschätzt.
Vielen Dank im Voraus.
Grüße,
NB: Hier sind meine Dateien:
behat.yml
# behat.yml
default:
suites:
my_suite:
type: symfony_bundle
bundle: AcmeDemoBundle
mink_session: default
mink_javascript_session: selenium2
extensions:
#Behat\MinkExtension\Extension:
#Behat\MinkExtension\ServiceContainer\MinkExtension:
Behat\MinkExtension:
base_url: 'http://demo.com'
# this will be the url of our application
#base_url: 'http://wikipedia.org'
sessions:
default:
goutte: ~
selenium2:
selenium2: ~
Behat\Symfony2Extension: ~
app/autoload.php
<?php
use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;
/**
* @var ClassLoader $loader
*/
$loader = require __DIR__.'/../vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
$loader->add('Behat\Gherkin',realpath(__DIR__.'/../vendor/behat/gherkin/src'));
$loader->add('Behat\Behat' ,realpath(__DIR__.'/../vendor/behat/behat/src'));
$loader->add('Behat\BehatBundle' ,realpath(__DIR__.'/../vendor/bundles'));
return $loader;