2016-04-10 15 views
0

So habe ich solches Szenario und Funktion gegeben:Testing loging mit Behat

Feature: User registration 

    As an Unregistered User I want to be able to register to the system so that I can use it. 

    Scenario: User successfully registers 
    Given I am unregistered user 
    When I register successfully into the system 
    Then I should become a registered user 
    And I should be logged on to the system 

ich dachte, wie den Test zu schreiben. Was behaupte ich? Lass uns darüber reden, dass ich im System angemeldet sein sollte. Ich hatte vor einiger Zeit Tests mit Phpunit und Spötter gemacht.

Es wird nicht genau gesagt, wie validiere ich, dass der Benutzer angemeldet ist. Kann ich validieren? Möchten Sie testen, ob der Benutzer ein div mit der Nachricht "Sie sind eingeloggt" sehen? Und dann nach dem Schreiben des Tests - implementieren Sie das Feature? Ein weiterer Fall könnte sein, dass der Benutzer auf eine andere Funktionsseite umgeleitet wird. Ich weiß nicht welche. Wenn ich würde, könnte ich Testüberprüfung schreiben, wird Benutzer zu dieser Seite umgeleitet.

Auch der Teil "Gegeben ich bin nicht registrierte Benutzer" - wie sieht es in Tests aus? Ich nehme an, es wird eine Sitzung geben und wenn Tests vor diesem Test mit eingeloggtem Benutzer ausgeführt wurden, dann wird es bei diesem Test auch eingeloggt sein. Ein Gedanke kam - Logout-Link aufzurufen und Check ist jedes Mal die Antwort 200. Dadurch wird sichergestellt, dass der Benutzer nicht registriert ist.

Oder ich denke, ich sollte mit Geschäftsinhaber diskutieren und fragen, was nach dem Login passieren soll.

Vielleicht sollte das Szenario sogar geändert werden, so dass es sichtbar wäre, wie es aussehen wird, wenn der Benutzer angemeldet ist? Es könnte sein, dass Leute, die diese Szenarien schreiben, nicht darüber nachgedacht haben und ich verstehe, dass es schwierig ist, über solche Details nachzudenken. Erst wenn Sie mit der Implementierung des Codes beginnen, werden die Fragen zu Details gestellt.

Wenn wir Beispiele von dieser Seite zu vergleichen:

http://www.netgenlabs.com/Blog/How-to-test-with-Behat

dann habe ich deutlich von den Szenarien sehen, was Nutzer hat und was muss in den Tests überprüft werden. Z.B.

Scenario: Open customer registration page 
     Given I am on homepage 
     When I follow "Customer registration" 
     Then I should be at "/customer-registration" 
     And I should see "Welcome to customer registration page!" 
+0

Hängt davon ab, wollen Sie die UI-Schnittstelle für die Anmeldung/Registrierung testen oder nur die Logik ohne UI testen? – gvf

+0

Ich denke UI. Ich meine nicht Javascript. Aber nur Benutzer, der seine Daten eingibt und eingeloggt ist. Ich habe mit einem Typen gesprochen, der diese Spezifikationen geschrieben hat, und er sagt, es sei schlecht, genaue Texte von Schaltflächen und Feldern anzugeben, weil die Spezifikation geändert werden muss, wenn wir das Feld wechseln. –

Antwort

0

Das erste Szenario ist genau wie es aussehen sollte und das zweite wie sollte nicht.

Gherkin-Sprache ist keine Programmiersprache und ihr Zweck ist es, ein Geschäftsbeispiel abzudecken.

Wie Sie vorgehen, ist eine Implementierung jedes Schritts nur Ihnen und Ihrer Anwendung überlassen. Die Implementierung hängt auch von der Ebene ab, die Sie zum Testen verwenden. Wenn sich Ihre Anwendung ändert, aber das Feature immer noch dasselbe ist, sollten Sie nichts in der Feature-Datei ändern.