2017-07-17 3 views
0

Wie würde ich die folgende Art von Szenario mit Gurke java mit Selen Griff:Anwenden Zustand in Gurke Eigenschaft Szenario

Scenario: Raise Invoice by User according to Raise Invoice Type. 
    When I select the Raise Invoice Type as "RaiseInvoiceType" 
    IF RaiseInvoiceType == 'ABC' 
    Method ABC() 
    else if RaiseInvoiceType == 'XYZ' 
    Method XYZ() 

„RaiseInvoiceType“ ist eine Variable und ist abhängig von der Radio-Taste oder Drop-Down. Wie Gurken-Feature-Dateien und Step-Definition-Klassenmethoden mit der Bedingung zu implementieren?

+0

zeigen uns die Schrittdefinition –

Antwort

3

Hintergrund

Gurke Feature-Dateien sind alle über die Konversations Lücke zwischen dem Unternehmen überbrücken und dem Entwicklungsteam und damit Code und bedingten Anweisungen sollen nie in sie erscheinen.

Die Lösung

Die Lösung für Ihr Problem ist, wie Sie die Schrittdefinition schreiben.

Mit Gurke der Ruby-Implementierung als Beispiel:

When('I select the Raise Invoice Type as "$invoice_type"') do | invoice_type | 
    if invoice_type == 'ABC' 
    method_abc 
    else 
    if invoice_type == 'XYZ' 
     method_xyz 
    else 
     raise 'Unknown invoice type' 
    end 
    end 
end 

Dieser den Code und bedingte Anweisungen aus der Feature-Datei bringt, die im Wesentlichen ist gemeint Dokumentation der Verhaltensweisen zu leben der Anmeldung/System

Weitere Verbesserungen

Aber ich würde sogar so weit gehen, den Wortlaut des st sich ändern ep zu:

Scenario Outline: Raise Invoice by User according to Raise Invoice Type. 
    When I raise the invoice type "<invoice_type>" 
    Then some expected behaviour 

Examples: 
    | invoice_type | 
    | ABC   | 
    | XYZ   | 

Dies bringt den Schritt von der Umsetzung entfernt (die Drop-Down-sein könnte, Radio oder Textfelder zum Beispiel), und mehr in Richtung Verhalten des Systems an Ort und Stelle - das Merkmal, dass dieses Szenario hervorzuheben ist, dass Sie sollten in der Lage sein, eine Rechnung zu erstellen, nicht, dass Sie eine Liste mit Optionen haben sollten, aus denen Sie in einem Auswahlfeld auswählen können.

0

Wichtig ist hier der Unterschied zwischen den beiden Rechnungstypen. Jeder Typ ist wichtig für Ihr Unternehmen, also würde ich für jeden Typ einen Schritt erstellen, z.

When I raise an ABC invoice und When I raise an XYZ invoice

Wenn der Schritt Definitionen Umsetzung könnte ich dann darüber nachdenken, die gleiche Hilfsmethode mit dem Code beispielsweise zu reduzieren

When I raise an ABC invoice' do 
    raise_invoice type: 'abc' 
end 

When I raise an XYZ invoice' do 
    raise_invoice type: 'xyz' 
end 

und dann eine Hilfsmethode behandeln, wie Sie die Rechnung erhöhen.

def raise_invoice(type:) 
    click_radio('invoice', type) 
end 

Dies gibt Ihnen sehr einfache Schritt Definitionen, keine conditionals oder andere Komplikationen in Ihrem Schritt defs und eine einfache Methode, mit der Interaktion im Browser zu beschäftigen.

Notiz alle obigen Code ist Pseudo-Code/Rubin

Verwandte Themen