我正在努力让我的测试套件正常运行并遇到一些问题。
#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。似乎现在正在工作。谢谢您的帮助。不确定是什么问题。
答案 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