预期CSS“Home”返回RSpec问题

时间:2011-10-14 00:38:02

标签: ruby-on-rails testing rspec selector

我正在努力让我的测试套件正常运行并遇到一些问题。

#home_controller_spec.rb
require 'spec_helper'

describe HomeController do
  describe "GET 'index'" do
    it "should be successful" do
      get 'index'
      response.should be_success
    end
    it "should have the right h2" do
      get 'index'
      response.should have_selector('h2', :content => 'Home')
    end
  end
end

第一次测试正常并且通过正常。任何时候我试图运行

response.should have_selector('[anything]')

它给出了这个错误:

2) HomeController GET 'index' should have the right h2
   Failure/Error: response.should have_selector('h2','Home')
   expected css "Home" to return something
 # ./spec/controllers/home_controller_spec.rb:12:in `block (3 levels) in <top (required)>'

我正在使用Rails 3.1和RSpec 2.6,并且已经卸载并重新安装了Rspec。在我的所有控制器测试中都会出现相同的结果。

如何修复此错误?

提前致谢!

编辑: 卸载所有宝石。重新安装所有宝石。重新设置RSpec,Capybara和Guard。似乎现在正在工作。谢谢您的帮助。不确定是什么问题。

2 个答案:

答案 0 :(得分:3)

默认情况下,RSpec不会在控制器规范中渲染模板。你可以:

1)将测试移动到视图规范

2)将render_views添加到控制器规范中的describe块,然后渲染模板。

选项1是首选IMO。您还可以使用请求规范来测试内容。如果您正在编写请求规范,则查看规范通常是多余的。

答案 1 :(得分:2)

使用rspec-rails gem V. 2.10.0它对我有用

it "should have the right title" do
  visit '/pages/howto'
  page.should have_selector("title", :text => "Abusa.me | Como funciona?")
end