SpecFlow: Szenario Skizzieren Beispiele
Ich gerade zu arbeiten anfange mit SpecFlow und wirklich, wie Sie das tool. Jedoch bin ich über einige Fragen in Bezug auf die Beispiel-Daten-Eingänge in das Szenario Skizziert.
Einfach Fragen, wenn was ist, ich bin mit normal ist oder ob es einen trick, um es.
Ich bin mit C# Visual Studio 2013 und schreiben eine MVC-App mit der Unterstrich-Stil Schritt-definition. Ich habe auch versucht, den regulären Ausdruck, der Stil aber immer noch ähnliche Probleme.
Also das Problem ist ich bin die Bereitstellung von Benutzername, Passwort etc. als Parameter einschließlich sample-Daten in meinen Beispielen. Es scheint, dass die folgenden Bedingungen Auftritt: -
- Ich muss "" um die Parameter, wenn 1. die Erzeugung dem Szenario, sonst wird es nicht abgeholt, da ein parameter überhaupt. Wenn jedoch die übergabe von Daten in den Beispielen bekomme ich ein "/" am Ende der übergebenen Daten. Wenn ich gehen Sie zurück zu dem Szenario, das ich dann entfernen Sie die "" um den parameter. Das ist ein wenig frustrierend, aber wenn das der beste Weg, damit umzugehen, kann ich damit Leben. Nur Frage mich, wenn jemand irgendwelche Ratschläge auf diesen Punkt.
- Das nächste Problem bezieht sich auf die Daten selbst. Es erscheint, wenn ich irgendwelche Zeichen wie @ oder & etc in meinen Daten, dann teilt Sie, dass die Daten an diesem Punkt an und führt Sie zum nächsten parameter, so bekomme ich falsche Daten zugeführt werden.
Ich habe meinen code unten - wenn jemand irgendwelche Vorschläge oder Ressourcen zu betrachten, die würde geschätzt.
Funktion Datei
Feature: AccountRegistration
Um Mojito Dienstleistungen in meiner organisation
Als Gast-Benutzer
Ich möchte ein Konto erstellen, die mit der Verwaltung privelages
Scenario Outline: Register with valid details
Given I am on the registration page
And I have completed the form with <email> <organisation> <password> and <passwordConfirmation>
When I have clicked on the register button
Then I will be logged in as <username>
And my account will be assigned the role of <role>
Examples:
| email | organisation | password | passwordConfirmation | username | role |
| usernamea | Bytes | password1 | password1 | usernamea | Admin |
| usernameb | Bytes | password2 | password2 | usernameb | Admin |
| usernamec | Bytes | password3 | password3 | usernamec | Admin |
| usernamed | Bytes | password4 | password4 | usernamed | Admin |
| usernamee | Bytes | password5 | password5 | usernamee | Admin |
Scenario Outline: Register with invalid details
Given I am on the registration page
And I have completed the form with <email> <organisation> <password> and <passwordConfirmation>
When I have clicked on the register button
Then I will get an error message
Examples:
| email | organisation | password | passwordConfirmation |
| Jonesa@mojito.com | Bytes | 1LTIuta&Sc | wrongpassword |
| Jonesb@mojito.com | Bytes | 1LTIuta&Sc | 1LTIuta&Sc |
| Jonesc@mojito.com | No Organisation | 1LTIuta&Sc | 1LTIuta&Sc |
Schritte Erzeugten Datei
[Binding]
public class AccountRegistrationSteps
{
[Given]
public void Given_I_am_on_the_registration_page()
{
ScenarioContext.Current.Pending();
}
[Given]
public void Given_I_have_completed_the_form_with_usernamea_Bytes_password_P0_and_password_P1(int p0, int p1)
{
ScenarioContext.Current.Pending();
}
[Given]
public void Given_I_have_completed_the_form_with_Jonesa_mojito_com_Bytes_P0_LTIuta_Sc_and_wrongpassword(int p0)
{
ScenarioContext.Current.Pending();
}
[When]
public void When_I_have_clicked_on_the_register_button()
{
ScenarioContext.Current.Pending();
}
[Then]
public void Then_I_will_be_logged_in_as_usernamea()
{
ScenarioContext.Current.Pending();
}
[Then]
public void Then_my_account_will_be_assigned_the_role_of_Admin()
{
ScenarioContext.Current.Pending();
}
[Then]
public void Then_I_will_get_an_error_message()
{
ScenarioContext.Current.Pending();
}
}
InformationsquelleAutor ccocker | 2014-08-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
SpecFlow hat Griff-string-Parameter standardmäßig, das problem ist, dass Sie linke Steuerung von bis zu SpecFlow in der Bestimmung der Laufzeit, was Ihre Werte sind.
Wenn du ran "Erzeugen Step-Definitionen", die Sie ausgewählt "- Methode name - Unterstriche" in der Stil dropdown-Menü. Dies ließ die Interpretation der input-Parameter bis zu SpecFlow, die schaffen, was als 'gierig' reguläre Ausdrücke identifizieren die Werte der parameter. Dies bedeutet, dass es das Komma als Teil des Wertes.
Hatte Sie ausgewählt, "Reguläre Ausdrücke in Attributen" (oder Refactoring Ihres Codes ein touch und dekoriert Ihre Attribute von hand) Ihr Schritt könnte so Aussehen:
Dies erzeugt einen mehr "parsimonious" Ausdruck, der sagt, SpecFlow zu akzeptieren, Zeichenketten beliebiger Länge, bis zu aber nicht einschließlich der nachgestellten Kommas. In Anführungszeichen, reguläre Ausdrücke, würde noch deutlicher:
Verwaltung der regulären Ausdrücke, die Sie selbst erstellen können-Kopfschmerzen, aber es macht wirklich die volle power von SpecFlow, wenn Sie so tun.
InformationsquelleAutor Carter Wickstrom
GELÖST - Es war kein Problem mit der Verwendung von Zeichen wie @ oder &. Es war eigentlich die Verwendung von Kommas in meinem Gegebenen Anweisung. Ich fand, wenn ich 'und' es funktioniert. Also, um es arbeiten die Anweisung geschrieben werden musste, wie unten: -
LÖSUNG
Write-Anweisung
Given I have completed the form with <email> and <organisation> and <password> and <passwordConfirmation>
Modify-Anweisung in einfache Anführungszeichen Parameter müssen strings sein
Given I have completed the form with '<email>' and '<organisation>' and '<password>' and '<passwordConfirmation>'
Generation Schritt Definitionen und ändern Sie dann-Anweisung zurück zum ausschließen einzelner Zitate
Given I have completed the form with <email> and <organisation> and <password> and <passwordConfirmation>
Etwas mucking herum, aber es wird die richtigen Ergebnisse. Hoffentlich in der Zukunft SpecFlow aktualisiert handle Parameter als Zeichenfolgen als Standard.
Eigentlich specflow Dokumentation sagt: Platzierung einfache Anführungszeichen (') um die Platzhalter (z.B. '<Platzhalter>' ) nicht zwingend nach der Gurke Sprache, sondern hilft zu verbessern SpecFlow die Fähigkeit zu analysieren Szenario skizzieren. Schritt 3 ist veraltet hier, es funktioniert gut, ohne entfernen der Anführungszeichen.
InformationsquelleAutor ccocker