2012-02-23 8 views
6

Me estoy haciendo una página en blanco como respuesta al ejecutar la siguiente prueba RSpec:página en blanco cuando se ejecuta pruebas RSpec para conseguir 'nuevo'

require 'spec_helper' 

describe FriendshipsController do 
    include Devise::TestHelpers 
    render_views 

    before(:each) do 
    @user = User.create!(:email => "[email protected]", :password => "mustermann", :password_confirmation => "mustermann") 
    @friend = User.create!(:email => "[email protected]", :password => "password", :password_confirmation => "password")  
    sign_in @user 
    end 

    describe "GET 'new'" do 

    it "should be successful" do 
     get 'new', :user_id => @user.id 
     response.should be_success 
    end 

    it "should show all registered users on Friendslend, except the logged in user" do 
     get 'new', :user_id => @user.id 

     page.should have_select("Add new friend") 
     page.should have_content("div.users") 
     page.should have_selector("div.users li", :count => 1) 
    end 

    it "should not contain the logged in user" do 
     get 'new', :user_id => @user.id 
     response.should_not have_content(@user.email) 
    end 
    end 
end 

consigo solamente una página en blanco cuando se ejecuta la prueba RSpec. Con la página en blanco quiero decir que no hay otro contenido HTML que no sea la declaración DOCTYPE.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 

Curiosamente, las pruebas de RSpec para post 'crear' funcionan bien. ¿Algún consejo?

Estoy usando Rails 3.2 con spec-rails, pepino y capibara (en lugar de webrat).

+1

tengo curiosidad, ¿alguna vez encontrado una solución a este problema? – voxobscuro

+0

también tiene curiosidad acerca de una solución para esto ... – jay

+0

Lamentablemente todavía no tengo una solución ... –

Respuesta

6

El problema es que está mezclando tipos de pruebas. El carpincho, que proporciona el objeto page se utiliza en las especificaciones de solicitud llamando al visit path. Para solucionar su problema, debe mirar el objeto response en lugar del objeto page.

Si desea probar el contenido con el capibara, la forma en que se podía construir esa prueba sería algo como esto:

visit new_user_session_path 
fill_in "Email", :with => @user.email 
fill_in "Password", :with => @user.password 
click_button "Sign in" 
visit new_friendships_path(:user_id => @user.id) 
page.should have_content("Add new friend") 

Ese código debe ser colocado en una especificación de petición en lugar de una especificación de controlador, por convención.

Cuestiones relacionadas