2016-06-21 9 views
1

Ich habe eine Gurkenfunktion, die überprüft, ob eine Website Zahlungsdateien korrekt verarbeitet hat (BACS, SEPA, FPS usw.). Die erste Stufe des Prozesses besteht darin, die Zahlungsdateien zu erstellen, die wiederum erwartete Ergebnisdaten in einer Datenbank erzeugen. Diese Daten werden dann verwendet, um mit der Zahlungsverarbeitungswebsite zu validieren.Gurke - dieselbe Funktion mehrere Male ausführen, abhängig von Datensätzen in einer Datenbank

Wenn ich eine Datei verarbeite, funktioniert meine Funktion perfekt, um die erwarteten Ergebnisse zu validieren. Wo ich feststecke, ist, wie ich die Funktion bekomme, um (n) Male zu laufen, abhängig von der Anzahl der Datensätze/Dateien, die ursprünglich verarbeitet wurden.

Ich habe einen 'Around'-Hook mit einer Iteration mit Rekordzählung ohne Freude ausprobiert, kann nicht sehen, wie ich es in ein Outline-Szenario einbauen kann und denke jetzt, dass eine Rake-Aufgabe vielleicht funktionieren könnte.

Alle Ideen würden sehr geschätzt werden.

Hier ist eine Probe des Features:

Features: Die Verarbeitung SEPA Credit Transfer von Dateien. Zahlungen am selben Tag

Background: 
    Given we want to test the "SEPA_Regression" scenario suite 
     And that we have processed a "SEPA" file from the "LDN" branch 
     And we plan to use the "ITA1" environment 
    Then we log in to "OPF" as a "SEPA Department" user 

@feature @find_and_check_sepa_interchange @all_rows 
Scenario: Receive SEPA Credit Transfer Files for branch 
    Given that we are on the "Payment Management > Interchanges" page 
    When I search for our Interchange with the following search parameters: 
     | Field Name | 
     | Transport Date From | 
     | Bank | 
     | Interchange Reference | 
    Then I can check the following fields for the given file in the "Interchanges" table: 
     | Field Name| 
     | Interchange Reference | 
     | Transport Date | 
     | File Name | 
     | File Format | 
     | Clearing Participant | 
     | Status | 
     | Direction | 
     | Bank | 
    When I select the associated "Interchange Id" link 
    Then the "Interchange Details" page is displayed 

aktualisieren Ich habe für die Funktion verschachtelte Schritte implementiert, so dass ich zum ersten Mal die Datensätze der Datenbank aufrufen und jeden Satz von Aufzeichnungen füttern (oder zumindest die Zeilen-ID) in das Hauptmerkmal wie so:

Eigenschaft

@trial_feature 
Scenario: Validate multiple Files 
    Given we have one or more records in the database to process for the "SEPA_Regression" scenario 
    Then we can validate each file against the system 

Eigenschaft Schritte:

Then(/^we can validate each file against the system$/) do 
x = 0 
while x <= $interchangeHash.count - 1 
    $db_row = x 
    # Get the other sets of data using the file name in the query  
    id = $interchangeHash[x]['id'] 
    file_name = $interchangeHash[x]['CMS_Unique_Reference_Id'] 
    Background.get_data_for_scenario(scenario, file_name) 
    steps %{ 
    Given that we are on the "Payment Management > Interchanges" page 
     When I search for our Interchange with the following search parameters: 
      | Field Name | 
      | Transport Date From | 
      | Bank | 
      | Interchange Reference | 
     Then I can check the following fields for the given file in the "Interchanges" table: 
      | Field Name| 
      | Interchange Reference | 
      | Transport Date | 
      | File Name | 
      | File Format | 
      | Clearing Participant | 
      | Status | 
      | Direction | 
      | Bank | 
     When I select the associated "Interchange Id" link 
     Then the "Interchange Details" page is displayed 

Scheint ein bisschen wie ein "Hack", aber es funktioniert.

+0

Hallo Milton! Willkommen bei Stack Overflow! Können Sie genauer erklären, wie das Programm derzeit funktioniert? Vielleicht, indem Sie den Code, den Sie jetzt benutzen, und etwas Pseudo-Code hinzufügen, wie Sie wollen, dass es funktioniert? – thesecretmaster

+0

@thesecretmaster - Aus irgendeinem Grund wird das anfängliche stackoverflow Frageformular von meiner Firma blockiert, also musste ich es auf meinem Telefon schreiben. Sieht so aus, als ob ich einen Kommentar abgeben kann, also hier geht es: Es ist nur eine grundlegende Gurke-Funktion, die sich auf der Website anmeldet und mit Watir Daten im Dom validiert. Wie gesagt, wenn ich nur einen Datensatz habe, ist alles in Ordnung. Wenn ich 2 Datensätze in der Datenbank habe, weiß ich nicht, wie die Funktion ein zweites Mal verarbeitet werden kann. – Milton70

+0

Warum würde eine einfache Schleife nicht funktionieren? – thesecretmaster

Antwort

0

Wenn Sie Stapelverarbeitungssoftware haben, dann sollten Sie mehrere vorgegebene (Setup) Schritte haben, 1 Wenn (Trigger) Schritt, mehrere Dann (Kriterien) Schritte.

Given I have these SEPA bills 
| sepa bill 1 | 
| sepa bill 2 | 
And I have these BAC bills 
| bac bill 1 | 
| bac bill 2 | 
When the payments are processed 
Then these sepa bills are completed 
| sepa bill 1 | 
| sepa bill 2 | 
And I these bac bills are completed 
| bac bill 1 | 
| bac bill 2 | 

Es ist einfacher, leichter zu lesen, was sollte getan werden, und kann auf mehr erweitert werden. Die Arbeiten sollten in den Schrittdefinitionen Einrichten und Verifizieren erfolgen.