2009-07-31 13 views
5

To wydaje się proste pytanie, ale nigdzie nie mogę znaleźć odpowiedzi. Zauważyłem, że w ogóle, testy w Ruby on Rails aplikacji można zapisać jako:Czy powinienem napisać testy torów ze słowem kluczowym def lub test?

test "the truth" do 
    assert true 
    end 

lub

def the_truth 
    assert true 
    end 

Wydaje nowszy materiał pisze testuje pierwszy sposób, ale nie mogę wydaje się, że znajduje to powód. Czy ktoś jest faworyzowany nad drugim? Czy jest jeden poprawniejszy? Dzięki.

Odpowiedz

8

W ostatnich latach nastąpiły przesunięcia z krótkich, skróconych nazw testowych na dłuższe, podobne do zdań nazwy testowe. Jest to częściowo spowodowane popularnością RSpec i koncepcją, że testy mają specyfikacje i powinny być opisowe.

Jeśli wolisz opisowe nazwy testowe, bardzo polecam korzystanie z metody test. Uważam, że jest bardziej czytelny.

test "should not be able to login with invalid password" do 
    #... 
end 

def_should_not_be_able_to_login_with_invalid_password 
    #... 
end 

Ponadto, ponieważ opis jest ciągiem, może zawierać dowolne znaki. Dzięki def masz ograniczone możliwości używania znaków.

+0

Czy metoda "test" jest częścią Rspec lub innej biblioteki? – Pithikos

2

Wierzę, że pierwsza metoda została wdrożona zaczynając od Rails 2.2. O ile mi wiadomo, to po prostu poprawia czytelność kodu (jako def może być dowolną funkcją, podczas gdy test jest używany tylko w przypadkach testowych). Powodzenia!

-1

Proponuję wykonanie testów przy użyciu RSpec lub Cucumber. Używam obu do testowania wszystkich moich aplikacji. RSpec służy do testowania modeli i kontrolerów, a Cucumber testuje widoki (za pomocą dołączonej funkcji Webrat).

Powiązane problemy