使用capybara和rspec的未定义方法``

时间:2013-10-11 02:57:50

标签: rspec capybara

我正在尝试创建一个简单的rspec来检查Bootstrap导航栏及其中的相应链接。我已在capybara/rspec中包含spec_helper.rb并在spec/features目录中包含rspec,因此我认为我的设置正确,但运行规范会产生错误,指出内部方法是未定义。

require 'spec_helper'

feature "HomePage" do 
  before { visit root_path }

  subject { page }

  describe "the navigation bar" do 
    it { should have_selector('.navbar') }

    within ".navbar" do 
      it { should have_link('Game Contest Server', href: root_path) }
      it { should have_link('Users', href: users_path) }
      it { should have_link('Sign Up', href: signup_path) }
    end
  end
end

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:4)

在RSpec中,capybara方法仅在it块内可用。您只需要将代码重构为:

describe "the navigation bar" do 
  it { should have_selector('.navbar') }

  it "should have links" do
     within ".navbar" do 
       should have_link('Game Contest Server', href: root_path)
       should have_link('Users', href: users_path)
       should have_link('Sign Up', href: signup_path)
     end
  end
end