Schrittdefinitionen in externen Dateien in Behat

8

Behat sucht standardmäßig nach den Schrittdefinitionen in der Datei FeatureContext (alle Schritte in einer Datei).
Mit vielen Schritten ist es schwierig, eine so große Datei zu verwalten.

Ich hätte gerne eine Definitionsdatei pro Feature-Datei.

Wie kann ich Schrittdefinitionen in externen Dateien haben?

z.B.

%Vor%     
Sfisioza 11.09.2011, 11:26
quelle

3 Antworten

6

Verwenden Sie Klassenvererbung und separate Kontexte.

%Vor%

Dann in /feature/FeatureContext.php die Kontextdateien importieren:

%Vor%     
takeshin 12.09.2011, 07:25
quelle
24

Behat verfügt über mehrere Optionen, mit denen Sie Ihren FeatureContext in mehrere Klassen aufteilen können. Zuerst können Sie die Old-School-PHP5-Vererbung verwenden. Wenn die Vererbung nicht das ist, was Sie wollen, unterstützt Behat auch Unterkontexte: " Unterkontexte verwenden " .

Wenn Sie als Nächstes Ihre Klasse anders als FeatureContext benennen möchten, können Sie das in "" neu definieren Kontextkonfiguration "Abschnitt Ihrer behat.yml Konfigurationsdatei.

Auf diese Weise können Sie allgemeine Definitionen und Hooks in separate Klassen aufteilen und sie in anderen Feature-Suites entweder mit Sub-Contexting oder Vererbung verwenden.

Aber Ihre Frage fragt auch:

  

Ich hätte gerne eine Definitionsdatei pro Feature-Datei.

Diese Anfrage ist völlig falsch. Bei Behat and Scenario BDD geht es darum, das Anwendungsverhalten in Geschäftsbegriffen zu beschreiben und ein Testwörterbuch für beschriebenes Verhalten zu erstellen. Wenn Sie das im Hinterkopf behalten, können Sie logischerweise nicht mehrere verschiedene Wörterbücher für ein Feature-Set haben. Indem Sie Schrittdefinitionen schreiben, sagen Sie Behath, was das Given I am on "/news" bedeutet. Und wenn Sie möchten, dass dieser Schritt verschiedene Dinge von Feature zu Feature bedeutet - Sie tun es falsch.

Behat besteht aus zwei Haupt- und genug getrennten Konzepten:

  1. *.feature Dateien, geschrieben in Gherkin Sprache. Diese Dateien sollten selbstbeschreibend sein. Bedeutet, dass sie dem Leser alle Informationen zur Verfügung stellen müssen, um sie zu verstehen. Gherkin ist keine neue Programmiersprache für Ihre Funktionstests, es ist nur ein Markdown für Ihre User-Storys!
  2. FeatureContext.php classes, beschreibt, wie Behat Ihre Features testen sollte. Es definiert ein anwendungsweites Wörterbuch, das mit der gesamten Anwendungs-Feature-Suite verwendet werden kann. Dies ist eine Programmierbrücke zwischen Ihren Abschriften ähnlichen Benutzergeschichten und den tatsächlichen Funktionstests.

Und du solltest das nicht durcheinander bringen. Einzelne Feature-Suite sollte Einzelschritte Wörterbuch (Definitionen) haben. Aber Sie können einzelne Wörterbücher in mehr als einer Feature-Suite verwenden, dank Vererbung und Unterkontexten. Und ja, Sie können einzelne Suite Wörterbuch in mehrere PHP-Klassen aufteilen ;-)

    
everzet 11.09.2011 13:04
quelle
0

Eine Lösung ist die horizontale Wiederverwendbarkeit mit Unterkontexten. Verwenden Sie für jede "Feature-Gruppe" einen Unterkontext.

%Vor%     
danidacar 17.07.2014 17:57
quelle

Tags und Links