2010-12-04 6 views
5

in den Schienen automatisch generierten Funktionstest (test/functional/products_controller_test.rb), habe ich den folgenden Code sehen:Schienen Funktionstest

class ProductsControllerTest < ActionController::TestCase 
    setup do 
    @product = products(:one) 
    ... 
    end 

    ...some tests here... 
end 

Die Fragen, die ich sind haben:

  1. Wo/wie ist die Methodenaufruf products() definiert?

  2. Was bedeutet products(:one) eigentlich? Wenn man den Code betrachtet, bedeutet das wahrscheinlich "ein Produkt erstellen", aber wie funktioniert das?

N.B. Ich bin neu bei Ruby/Rails, Entschuldigung, wenn das eine triviale Frage ist.

Antwort

11

Wenn Sie in Ihren Test/Fixtures-Ordner schauen, sehen Sie eine products.yml-Datei. Dies wird beim Erstellen eines Modells automatisch generiert. In Ihren Testdateien bezieht sich products(:one) auf das Produkt in dieser Datei mit der Bezeichnung "eins". Fixtures werden automatisch für Tests in die Datenbank geladen, und die Methode products() wird als praktischer Accessor für diese Objekte erstellt.

Sie können Ihre eigenen Fixture-Objekte nach Bedarf direkt in der Yml-Datei hinzufügen.

Verwandte Themen