Testen der Passwortlängenvalidierung mit RSpec

8

Ich schreibe einige Komponententests, um sicherzustellen, dass ein Benutzermodell kein Passwort & lt; 8 Zeichen lang.

Ich habe mit einem Benutzermodell begonnen:

%Vor%

Und ein user_spec.rb-Test:

%Vor%

Allerdings habe ich festgestellt, dass dies meine Validierung nicht wirklich testet, es testet nur, dass meine Fabrik ein Passwort hatte & gt; = 8 Zeichen.

Gibt es einen schönen Weg, dies zu tun, außer dem Testen des Gültigen? Methode für 0-7 Zeichenpasswörter?

Meine Theorie ist, dass, wenn ich nur für 7 Zeichen und jemand aus Versehen harte Codes, die 4 Zeichen Passwörter sind OK, dies würde Validierung, aber ist nicht wirklich, was beabsichtigt war. Es könnte auch einen anderen Code geben, wo es darauf ankommt, dass ein Passwort mehr als 8 Zeichen hat (nicht wahr- scheinlich, aber in anderen Situationen könnte es wahr sein) und ein Passwort mit 4 zuzulassen ist falsch.

In diesem Fall weiß die Person, die die Passwortvalidierung im Modell geändert hat, nicht, dass sie etwas falsch gemacht hat.

Ich würde einfach gerne wissen, wie man solche Situationen mit TDD gut testet.

    
Sarah Tattersall 28.10.2012, 17:41
quelle

2 Antworten

16

Unter Verwendung der area_length_of Abgleichmethode in Die Einstellungen von Thoughtbot können Sie tun:

%Vor%

Siehe auch: Wie kann ich testen? : Inklusionsvalidierung in Rails mit RSpec

    
Chris Salzberg 28.10.2012, 22:07
quelle
2

Ich weiß nicht, ob das deine Frage beantwortet, aber ich denke, dass du mit so etwas sicher bist:

%Vor%

Der Grund ist, dass für diesen Test, um ein 4-stelliges Passwort durchzulassen jemand hätte eine Validierungsregel, die sagt, 4 Zeichen ist in Ordnung, 7 ist nicht in Ordnung, aber 8 ist in Ordnung. Nicht etwas, das zufällig passiert.

    
Derek Hill 28.10.2012 18:30
quelle