Ich habe solche behat.ymlBehat 3.1 mehrere Kontexte, zweite Kontextklasse nicht
default:
autoload:
#'': %paths.base%/tests/AppBundle/features/user_registration/bootstrap
#'': %paths.base%/tests/AppBundle/features/user_login/bootstrap
[ %paths.base%/tests/AppBundle/features/user_registration/bootstrap, %paths.base%/tests/AppBundle/features/user_login/bootstrap ]
formatters:
progress: ~
suites:
app_features:
#paths:
#features: %paths.base%/tests/AppBundle/features
paths: [ %paths.base%//tests/AppBundle/features ]
contexts:
#- tests\AppBundle\user_registration\UserRegistrationContext
- UserRegistrationContext
- UserLoginContext
#suites:
# default:
# contexts:
# - FeatureContext:
# session: '@session'
extensions:
Behat\Symfony2Extension: ~
Auch mit dieser Ordnerstruktur gefunden:
Mit UserRegistrationContext Klasse its ok, es wirft keine Fehler. Dann habe ich UserLoginContext hinzugefügt und kann es nicht finden.
Ich verwende "behat/behat": "^ 3.1" in composer.json.
Die Datei behat.yml befindet sich auf derselben Ebene wie das Verzeichnis "tests".
UserLoginContext sieht wie folgt aus:
<?php
use Behat\Behat\Tester\Exception\PendingException;
use Behat\Behat\Context\Context;
use Behat\Behat\Context\SnippetAcceptingContext;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;
use Behat\Mink\Driver\GoutteDriver;
use Behat\Mink\Session;
use AppBundle\Controller\UserController;
/**
* Defines application features from the specific context.
*/
class UserLoginContext implements Context, SnippetAcceptingContext
{
private $session;
/**
* Initializes context.
*
* Every scenario gets its own context instance.
* You can also pass arbitrary arguments to the
* context constructor through behat.yml.
*/
public function __construct()
{
// Choose a Mink driver. More about it in later chapters.
$driver = new GoutteDriver();
$this->session = new Session($driver);
}
}
Warum die UserLoginContext nicht gefunden wird?
aktualisieren
Ich habe bemerkt, dass, wenn ich so tun - ein Kontext verlassen, dann wird UserLoginContext gefunden:
default:
autoload:
#'': %paths.base%/tests/AppBundle/features/user_registration/bootstrap
'': %paths.base%/tests/AppBundle/features/user_login/bootstrap
#[ %paths.base%/tests/AppBundle/features/user_registration/bootstrap, %paths.base%/tests/AppBundle/features/user_login/bootstrap ]
formatters:
progress: ~
suites:
app_features:
#paths:
#features: %paths.base%/tests/AppBundle/features
paths: [ %paths.base%//tests/AppBundle/features ]
contexts:
#- tests\AppBundle\user_registration\UserRegistrationContext
#- UserRegistrationContext
- UserLoginContext
#suites:
# default:
# contexts:
# - FeatureContext:
# session: '@session'
extensions:
Behat\Symfony2Extension: ~
aktualisieren
temporäre Lösung, die ich gefunden - erstellen ein neues Profil für jeden Kontext Aber ich denke, es ist nicht, wie es sein sollte, aber noch zeigen, wie ich es getan habe:
user_login:
autoload:
'': %paths.base%/tests/AppBundle/features/user_login/bootstrap
formatters:
progress: ~
suites:
app_features:
paths: [ %paths.base%//tests/AppBundle/features ]
contexts:
- UserLoginContext
extensions:
Behat\Symfony2Extension: ~
Und dann laufen mit --profile Parameter:
sudo vendor/behat/behat/bin/behat --profile user_login
Das kleine Problem ist, dass, wenn ich will Ich möchte alle Tests ausführen und viele Befehle ausführen. Auch Config Wiederholung. Ich warte immer noch auf eine bessere Lösung.