2012-02-23 42 views
6

運行以下RSpec的測試時,我得到一個空白頁面的響應:運行RSpec的測試爲GET時,遇到了空白頁「新」

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 

運行RSpec的測試時,我只得到一個空白頁。 空白頁面我的意思是除DOCTYPE聲明外沒有其他HTML內容。

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

有趣的是,RSpec測試後'創建'工作正常。任何提示?

我正在使用Rails 3.2與spec-rails,黃瓜和水豚(而不是webrat)。

+1

我很好奇,你有沒有找到了解決這個問題呢? – voxobscuro 2012-03-15 17:56:32

+0

也對此解決方案感到好奇.. – jay 2012-03-27 23:07:47

+0

不幸的是,我還沒有解決方案... – 2012-04-06 16:07:31

回答

6

問題是您正在混合測試類型。通過調用visit path,提供page對象的Capybara用於請求規格。

爲了解決您的問題,你需要看的response對象,而不是page對象。

如果你想測試的內容與水豚,你會建立一個測試的方式會是這個樣子:

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") 

該代碼應放置在要求規範,而不是一個控制器規範,由慣例。

相關問題