Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

have_selector is failing test

I am having a problem including a should have_selector problem with rspec:

This is my code:

describe "GET 'home'" do
  it "returns http success" do
    get 'home'
    expect(response).to be_success
  end

  it "should have the right title" do
    should have_selector("title", 
          :content => "Ruby on Rails Tutorial Sample App | Home")
  end
end

I have included the following at the top:

RSpec.describe PagesController, :type => :controller do
  render_views

My html5 has the following:

<title>Ruby on Rails Tutorial Sample App | Home</title>

and I get an error message saying:

Failures:

1) PagesController GET 'home' should have the right title
 Failure/Error: should have_selector("title",
   expected #<PagesController:0x007fceef586a90> to respond to `has_selector?`
 # ./spec/controllers/pages_controller_spec.rb:14:in `block (3 levels) in <top  (required)>

Can someone help with that?

rspec -v 3.0.2

rails 4.1.1

thank you in advance.

like image 730
itzmurd4 Avatar asked Oct 20 '25 11:10

itzmurd4


1 Answers

Rspec 3 does not include the capybara matchers in controller specs by default. You can change this for an individual spec by doing

include Capybara::RSpecMatchers

Or, in your spec helper

  config.include Capybara::RSpecMatchers, :type => :controller

Your next issue is that recent versions of capybara don't allow you to test for the presence of invisible elements by default, and the title element is considered to be invisible. You should use the have_title matcher instead.

like image 87
Frederick Cheung Avatar answered Oct 23 '25 04:10

Frederick Cheung