Ich versuche die Länge eines Postleitzahl-Attributs zu testen, um sicherzustellen, dass es 5 Zeichen lang ist. Ich teste gerade, um sicherzustellen, dass es nicht leer und dann zu kurz mit 4 Zeichen und zu lang mit 6 Zeichen ist.
Gibt es eine Möglichkeit, es genau 5 Zeichen zu testen? Bisher habe ich online oder im rspec Buch nichts gefunden.
Wenn Sie eine Validierung für ein ActiveRecord-Modell testen, empfehle ich, shoulda-matchers
auszuprobieren. Es bietet eine Reihe nützlicher RSpec-Erweiterungen, die für Rails nützlich sind. Sie könnten eine einfache Einzeilenspezifikation für Ihr Postleitzahlattribut schreiben:
RSpec erlaubt dies:
%Vor% Man kann eigentlich alles statt "Zeichen" schreiben, es ist nur syntaktischer Zucker. Alles was passiert, ist, dass RSpec #length
auf das Thema aufruft.
Allerdings , aus Ihrer Frage klingt es so, als ob Sie die Validierung tatsächlich testen möchten. In diesem Fall würde ich @ Rosstas Rat befolgen.
UPDATE:
Seit RSpec 3 gehört dies nicht mehr zu den rspec-Erwartungen, sondern steht als separates Juwel zur Verfügung: Ссылка
Sammel-Matcher (alle Matcher, die sich gegen Strings, Hashes und Arrays behaupten) wurden in ein separates Juwel, rspec-collection_matchers <, abstrahiert / a>.
Um diese Matcher zu verwenden, fügen Sie dies zu Ihrem Gemfile
:
Oder dein .gemspec
, wenn du an einem Juwel arbeitest:
Fügen Sie das dann Ihrem spec_helper.rb
hinzu:
Und dann können Sie in Ihrer Spezifikation Sammlungs-Matcher verwenden:
%Vor% Beachten Sie, dass Sie items
und characters
synonym verwenden können, sie sind nur Syntax-Zucker und der have
-Matcher und seine Varianten können für Arrays, Hashes und Ihre Zeichenfolge verwendet werden.