我是初学者,学习Ruby on Rails,我有一个问题让我的测试工作 . 我使用rspec和水豚 . 问题是Capybara没有渲染页面或它没有到达正确的页面 . 执行时,页面在浏览器中正确打开:$ rails s . 但是当我使用save_and_open_page进行测试时,html是空的 .
我的规格
以下是我的第一个PagesController规范:
require 'spec_helper'
describe PagesController do
describe "GET 'home'" do
it "returns http success" do
visit pages_home_path
save_and_open_page #at this point it opens the a blank html page
end
end
end
我的控制器规范,这将打开一个空白页面 .
我尝试了Pagescontroller规范的替代语法:
require 'spec_helper'
describe PagesController do
describe "GET 'home'" do
it "returns http success" do
get :home
response.should render_template('home')
response.should have_content("home") #it fails here
end
end
end
这会在控制台中显示以下错误:
1)PagesController GET'home'返回http成功失败/错误:response.should have_content(“home”)期望在“#”#./spec/controllers/pages_controller_spec.rb:10:in中有文本“home” . 阻止(3级)'
完成1.91秒1例,1次失败
Other Configurations:
在spec_helper中我添加了以下行,其余部分未被触及 .
require 'capybara/rspec'
宝石文件:
gem 'rails', '3.1.0'
group :development, :test do
gem 'autotest-rails'
gem 'sqlite3'
gem 'ruby-debug19', :require => 'ruby-debug'
gem 'cucumber-rails', :require => false
gem 'cucumber-rails-training-wheels'
gem 'database_cleaner'
gem 'capybara'
gem 'launchy'
gem 'rspec-rails'
gem 'simplecov'
gem 'rspec-core', '2.8.0'
end
group :assets do
gem 'therubyracer'
gem 'sass-rails', " ~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
gem 'jquery-rails'
gem 'haml'
我没有安装Webrat并且在我的Gem列表中验证了它 . 谢谢您的帮助 .
2 回答
从documentation看来,您应该将您的规格标记为
feature
或将它们放入spec/features
文件夹中 .对我来说,似乎你有控制器测试的默认行为,即 not 渲染任何东西 . 您可以覆盖它,但我认为将集成测试与控制器测试分开会更好 .
听起来你的第二个测试是发出请求而无法找到内容,因为内容不是“响应”,而是在“response.body”中,尝试这样: