Una de las cosas que parece ser bastante común con Rails, es tener testeo automatizado. Incluso por lo que he leído se usa mucho Test Driven Development (o TDD, donde se especifican las pruebas antes de escribir el código que cumpla los requerimientos)
Todavía no llegué al nivel de TDD, cuesta un poco acostumbrarse a la metodología, pero sí empecé a escribir algunas pruebas. Para eso estoy usando RSpec, que no es el ambiente que viene por defecto, pero se integra muy bien.
RSpec define un Domain Specific Language (DSL), que hace que los casos de prueba queden muy sencillos de leer, casi como si estuvieran escritos en inglés.
Por ejemplo, supongamos que tenemos una entidad User, y queremos que solo tengan acceso los usuarios logueados, y que la página donde se listan los usuarios tenga título "Users". La especificación de los casos de prueba podría ser la siguiente:
require 'spec_helper'¿Simple, no? Cada vez me está gustando más Rails :)
describe UsersController do
render_views
describe "GET 'index'" do
describe "for non-signed-in users" do
it "redirects to login page" do
get :index
response.should redirect_to(signin_path)
flash[:notice].should match(/sign in/i)
end
end
describe "for signed-in users" do
login_user
before(:each) do
get :index
end
it "is successful" do
response.should be_success
end
it "has the right title" do
response.should have_selector("title", :content => "Users")
end
end
end
end
La salida, si todos los tests pasan, sería algo así:
UsersControllerSi alguna de las pruebas falla, en el resumen aparece en rojo y al final muestra el detalle del error.
GET 'index'
for non-signed-in users
redirects to login page
for signed-in users
is successful
has the right title
Algunos recursos interesantes:
como seria el controlador para este test xq no tengo manera de probarlo
ResponderBorrarNo era la idea hacer un test de verdad con este código, simplemente dar un ejemplo de como se escribe, y mostrar que se lee casi como si estuviera en lenguaje natural.
Borrarpodrias ayudarme estoy haciendo un pekeño ejemplo para poder entender mejor esto ya tengo la instalacion y todo pero estoy haciendo los test con rspec y no se como implementarle xq me parece... no complicado sino que de verdad no se por donde empezar
BorrarYo seguí este libro que explica como testear aplicaciones con Rails: http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
BorrarLa versión on-line creo que sigue siendo gratis...
gracias por responder...queria saber como hacer los test en rspec teniendo los controladores vacios
Borrarpodrias ayudarme estoy haciendo un pekeño ejemplo para poder entender mejor esto ya tengo la instalacion y todo pero estoy haciendo los test con rspec y no se como implementarle xq me parece... no complicado sino que de verdad no se por donde empezar
ResponderBorrar