2009-07-31 4 views
5

Dies scheint wie eine einfache Frage, aber ich kann die Antwort nirgendwo finden. Ich habe das in der Regel Tests in einer Ruby on Rails-Anwendung bemerkt können geschrieben werden:Sollte ich Rails Tests mit dem def oder test Keyword schreiben?

test "the truth" do 
    assert true 
    end 

oder

def the_truth 
    assert true 
    end 

Es neueres Material scheint, schreibt den ersten Weg testet, aber ich kann nicht scheinen einen Grund dafür zu finden. Ist man gegenüber dem anderen bevorzugt? Ist eine mehr korrekt? Vielen Dank.

Antwort

8

In den letzten Jahren gab es eine Verschiebung von kurzen, abgekürzten Testnamen zu längeren, satzartigen Testnamen. Dies liegt teilweise an der Popularität von RSpec und dem Konzept, dass Tests Spezifikationen sind und deskriptiv sein sollten.

Wenn Sie beschreibende Testnamen bevorzugen, empfehle ich sehr, mit der test Methode zu gehen. Ich finde es besser lesbar.

Da die Beschreibung eine Zeichenfolge ist, kann sie auch beliebige Zeichen enthalten. Mit def sind Sie begrenzt in welchen Zeichen Sie verwenden können.

+0

Ist die 'test' Methode Teil von Rspec oder einer anderen Bibliothek? – Pithikos

2

Ich glaube, die erste Methode wurde beginnend mit Rails 2.2 implementiert. Soweit mir bekannt ist, verbessert es einfach die Lesbarkeit Ihres Codes (wie def kann jede Funktion sein, während Test nur in Testfällen verwendet wird). Viel Glück!

-1

Ich würde vorschlagen, Ihre Tests entweder mit RSpec oder Cucumber. Ich benutze beide, um alle meine Anwendungen zu testen. RSpec wird verwendet, um die Modelle und Controller zu testen, und Cucumber testet die Ansichten (über die enthaltene Webrat Funktionalität).

Verwandte Themen