Gibt es einen rspec-Test für die genaue Länge eines Attributs?

7

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.

    
gr0k 19.04.2013, 21:34
quelle

4 Antworten

2

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:

%Vor%     
rossta 20.04.2013, 09:44
quelle
11

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: Ссылка

    
Andy Waite 21.04.2013 21:00
quelle
9

In der neuesten Hauptversion von RSpec ist kein have -Matcher mehr vorhanden.

Ab RSpec 3.1 ist der korrekte Test:

expect("Some string".length).to be(11)

    
Pak 24.10.2014 09:21
quelle
0

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 :

hinzu %Vor%

Oder dein .gemspec , wenn du an einem Juwel arbeitest:

%Vor%

Fügen Sie das dann Ihrem spec_helper.rb hinzu:

%Vor%

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.

>     
JayTarka 01.08.2015 14:54
quelle

Tags und Links