2016-10-31 1 views
2

Also bei meiner Arbeit haben wir eine Kern SpecFlow-Bibliothek, die unsere verschiedenen Teams für ihre Automatisierung verwenden können. Diese Bibliothek verfügt über einige deklarierte Schritte.Überschreibe eine Schritt-Deklaration in SpecFlow?

Zum Beispiel könnte die Bibliothek etwas wie dieses:

When I click the button 

Doch lassen Sie uns sagen, dass ich meine eigenen Schritt Deklaration definieren wollen, die genau gleiche Formulierung verwendet. Ist es möglich, es zu überschreiben?

Antwort

3

Wie @Grasshopper schrieb, sind die Schrittdefinitionen global.
Aber Sie könnten Scopes verwenden, um es zu überschreiben.
Siehe http://www.specflow.org/documentation/Scoped-Bindings/

Vergessen Sie in diesem Fall nicht, bei jedem Szenario das Tag oder die ursprüngliche Schrittdefinition anzugeben.

0

Sie erhalten eine DuplicateStepException, wenn Sie einen identischen Schritt (in Ihrem Fall - wenn ich auf die Schaltfläche klicke) zweimal in derselben Schrittdefinitionsdatei oder in einem anderen Schritt ausführen. Selbst wenn Sie eine bestimmte oder eine Anmerkung verwenden. Dies liegt daran, dass die Schrittdefinitionen global geladen werden, was zu einem Konflikt führt.

Auch können Sie nicht eine Stepdefinition oder Hook-Datei zu erweitern, da Gurke einen Fehler wirft, dass dies nicht akzeptabel ist. Somit kann man das Verhalten nicht durch Vererbung überschreiben.

Sie müssen alle zusammen einen anderen Schritt schreiben oder, wenn möglich, die Schaltfläche als Parameter an den vorhandenen Schritt übergeben und die Logik einfügen, wenn Sie den Bibliothekscode ändern dürfen.

3

Es wäre eine sehr schlechte Idee, dies zu tun, da jedes Szenario, das diesen Schritt verwendet und fehlschlägt, sehr viel schwieriger zu verstehen und zu debuggen ist.

Im Allgemeinen ist die Verwendung generischer Bibliotheksschritte in Szenarien auch keine so gute Idee. Szenarien sollten keine allgemeinen Schritte oder Beschreibungen enthalten, wie Dinge erledigt werden. Stattdessen sollten sie Schritte enthalten, die für Ihren Geschäftskontext spezifisch sind, und diese sollten beschreiben, WAS getan wird und WARUM es getan wird.

Also statt

When I click on sign in 
    And I fill in my email with ... 
    ... 

erhalten wir die viel einfacher und abstrakt

When I sign in 

, die alle über das, was wir tun, und nichts darüber, wie wir es tun.