I am getting an empty page as response when running the following RSpec test:
require 'spec_helper'
describe FriendshipsController do
include Devise::TestHelpers
render_views
before(:each) do
@user = User.create!(:email => "max@mustermann.com", :password => "mustermann", :password_confirmation => "mustermann")
@friend = User.create!(:email => "john@doe.com", :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
I only get a blank page when running the RSpec test.
With blank page I mean there is no other HTML content other than the DOCTYPE declaration.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
Interestingly, RSpec tests for post ‘create’ work fine. Any hints?
I am using Rails 3.2 with spec-rails, cucumber and capybara (instead of webrat).
The problem is that you are mixing types of tests. Capybara, which provides the
pageobject is used in request specs by callingvisit path.In order to fix your problem, you need to be looking at the
responseobject instead of thepageobject.If you want to test content with capybara, the way that you would build that test would look something like this:
That code should be placed in a request spec instead of a controller spec, by convention.