Capybara undefined方法'has_title?'?

时间:2013-05-27 09:27:41

标签: ruby-on-rails capybara railstutorial.org

我正在思考Mike Hartl的Rails教程和in section 4.4它似乎让我更改了以下格式的rspec请求文件:

page.should have_selector('title', :text => "#{base_title}")

expect(page).to have_title("Ruby on Rails Tutorial Sample App")

我现在得到两个未定义的方法错误,我使用“.to have_title”和“.to_not have_title”。我关闭并重新启动Webrick,Spork和Guard以防万一,但它仍然不起作用。

Capybara版本1.1.2 Rspec版本2.11.1

如果需要任何其他信息,请与我们联系。

3 个答案:

答案 0 :(得分:4)

显然教程最近发生了变化。

通过谷歌缓存访问该页面显示原始版本(对我来说很好):

require 'spec_helper'

describe "Static pages" do

  describe "Home page" do

    it "should have the h1 'Sample App'" do
      visit '/static_pages/home'
      page.should have_selector('h1', :text => 'Sample App')
    end

    it "should have the base title" do
      visit '/static_pages/home'
      page.should have_selector('title',
                        :text => "Ruby on Rails Tutorial Sample App")
    end

    it "should not have a custom page title" do
      visit '/static_pages/home'
      page.should_not have_selector('title', :text => '| Home')
    end
  end
  .
  .
  .
end

答案 1 :(得分:0)

可能是您的版本问题。完成https://github.com/jnicklas/capybara/issues/863

expect(first('title').native.text).to eq "my title"

答案 2 :(得分:0)

我有这个问题,我意识到最终我已经切换到跟踪rails版本4的代码,而不是3.2。

要测试您正在使用的rails版本,请键入命令

rails -v

然后在教程页面上,使用右侧的导航器选择正确的rails版本。看似简单,但希望它可以为这个问题的其他人带来悲伤。