2011-05-20 12 views

Respuesta

32

hay un breve ejemplo de la rspec-rails Github site. También puede usar el generador de andamios para producir algunos ejemplos enlatados. Por ejemplo,

rails g scaffold Article

debe producir algo como esto:

require "spec_helper" 

describe ArticlesController do 
    describe "routing" do 

    it "routes to #index" do 
     get("/articles").should route_to("articles#index") 
    end 

    it "routes to #new" do 
     get("/articles/new").should route_to("articles#new") 
    end 

    it "routes to #show" do 
     get("/articles/1").should route_to("articles#show", :id => "1") 
    end 

    it "routes to #edit" do 
     get("/articles/1/edit").should route_to("articles#edit", :id => "1") 
    end 

    it "routes to #create" do 
     post("/articles").should route_to("articles#create") 
    end 

    it "routes to #update" do 
     put("/articles/1").should route_to("articles#update", :id => "1") 
    end 

    it "routes to #destroy" do 
     delete("/articles/1").should route_to("articles#destroy", :id => "1") 
    end 

    end 
end 
+1

https://github.com/rspec/rspec-rails # routing-specs pueden ser útiles –

+0

Tengo un problema con este tipo de pruebas, esta es mi pregunta http://stackoverflow.com/questions/14330293/rspec-for-routes-and-testing- routes-rb-specifiC# comment19916220_14330293, más o menos no verifica si la ruta existe en routes.rb, simplemente va con la verificación syntanx. ¿Algunas ideas? – Matilda

-8

respuesta de Zetetic explica cómo probar rutas. Esta respuesta explica por qué no debes hacer eso.

En general, las pruebas deben probar el comportamiento expuesta al usuario (o de objetos de cliente), no la aplicación por el cual se establece que el comportamiento. Las rutas están orientadas al usuario: cuando el usuario escribe en http://www.mysite.com/profile, no le importa que vaya a ProfilesController; más bien, le importa que él vea su perfil.

Así que no pruebes que vas a utilizar ProfilesController. Más bien, configure un escenario de Pepino para probar que cuando el usuario vaya al /profile, vea su nombre e información de perfil. Eso es todo lo que necesitas.

De nuevo: no pruebes tus rutas. Pon a prueba tu comportamiento.

+2

Sería bueno si quien está bajando la votación dejaría un comentario explicando por qué lo están haciendo ... –

+3

¿Por su definición, todas las pruebas unitarias son inútiles? – sevenseacat

+1

Generalmente no. Las pruebas unitarias son útiles a nivel de modelo, en el que interviene la lógica empresarial interna (independiente de la IU). En el nivel del controlador, sin embargo, solo la interfaz de usuario es relevante, por lo que probar la implementación del controlador realmente no le dice nada útil. Si alguien me dijera que tengo que elegir entre tener historias de Pepino y tener especificaciones del modelo de RSpec, tomaría las historias de Pepino cada vez. (Afortunadamente, no tengo que elegir. :)) –

Cuestiones relacionadas