have_selector正在测试失败

时间:2014-06-22 07:14:37

标签: ruby-on-rails ruby-on-rails-4 rspec

我遇到了一个问题,包括rspec的a have_selector问题:

这是我的代码:

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

我在顶部包含以下内容:

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

我的html5有以下内容:

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

我收到一条错误消息:

故障:

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

有人可以帮忙吗?

rspec -v 3.0.2

rails 4.1.1

提前谢谢。

3 个答案:

答案 0 :(得分:2)

默认情况下,Rspec 3不包括控制器规格中的水豚匹配器。您可以通过

更改单个规格
include Capybara::RSpecMatchers

或者,在您的规范助手

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

你的下一个问题是,最近版本的水豚不允许你默认测试不可见元素的存在,并且title元素被认为是不可见的。您应该使用have_title匹配器。

答案 1 :(得分:2)

Hollo ruby​​ist pal!

我有这个问题,那是因为有两件事,首先我没有使用capybara gem,第二个have_selector只接受以下之一:count,:minimum,:maximum,:between,:text,:visible,:exact ,:match,:等待键并且不明白:内容。

我相信你已经解决了这个问题,但是对于那些最近开始学习Ruby on Rails并且遇到这样一个问题的人我应该说它首先将它放入你的Gemfile中的capybara gem如下:

group :development, :test do
  ...
  gem 'capybara'
end

并运行命令

&#13;
&#13;
bundle install
&#13;
&#13;
&#13;

然后测试你的视图是否有特定的标题,在pages_controller_spec.rb文件中写

describe "GET #home" do
  ...
  it "should have the right title" do
    get :home
    expect(response.body).to have_selector('title', :text => 'Ruby on Rails rocks')
  end
end

我希望它会对某人有所帮助。

Cheerio!

答案 2 :(得分:0)

检查内容是查看规范... 控制器规范意味着检查响应状态/路径,渲染页面/部分,实例变量过滤器参数。