我从michael hartl书中得到了这个测试:
require 'spec_helper'
describe "Static pages" do
let(:base_title) { "Ruby on Rails Tutorial Sample App" }
describe "Home page" do
it "should have the h1 'Sample App'" do
visit '/static_pages/home'
page.should have_selector('h1', :text => 'Sample App')
end
it "should have the title 'Home'" do
visit '/static_pages/home'
page.should have_selector('title', :text => "#{base_title} | Home")
end
end
end
观点:
<% provide(:title, 'Home') %>
<h1>Sample App</h1>
<p>
This is the home page for the
<a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
sample application.
</p>
当我运行测试时,它说:
....
Finished in 1.91 seconds
4 examples, 0 failures
Randomized with seed 42247
.F...
Failures:
1) Static pages Home page should have the title 'Home'
Failure/Error: page.should have_selector('title', :text => "#{base_title} | Home")
expected #has_selector?("title", {:text=>"Ruby on Rails Tutorial Sample App | Home"}) to return true, got false
# ./spec/requests/static_pages_spec.rb:16:in `block (3 levels) in <top (required)>'
Finished in 1.91 seconds
5 examples, 1 failure
Failed examples:
rspec ./spec/requests/static_pages_spec.rb:14 # Static pages Home page should have the title 'Home'
Randomized with seed 17491
但它应该通过,因为当我在浏览器中查看页面时,标题是:Ruby on Rails Tutorial Sample App | Sample App,这是正确的!
答案 0 :(得分:5)
确保您在Gemfile中使用capybara 1.1.2。从2.0 capybara开始不适用于标题测试(https://github.com/jnicklas/capybara/issues/844)
...
group :test do
gem 'capybara', '1.1.2'
end
答案 1 :(得分:3)
目前,你应该做@dimuch建议的事情,并确保你指定Michael Hartl在教程(1.1.2)中使用的相同Capybara版本。
如果您希望将来升级到Capybara 2.0并保留对标题的测试,请查看this StackOverflow answer以获取创建RSpec匹配器的指南,该指南将执行您期望的操作。
答案 2 :(得分:3)
使用capubara 2.0你应该使用
page.should have_title("The title")
但是,如果你不添加
,那就完成了工作<style type="text/css">head, head title { display: block }</style>
到你的application.html
page.title # => "The title"
page.has_title?("The title") # => true
page.should have_title("The title")
答案 3 :(得分:0)
我一直在使用以下内容,他们一直在发布绿色版。我删除了have_selector并使用了have_title。
it { should have_title( full_title('Sign up') ) }
- 和 -
it { should have_title(user.name) }
这是与capybara 2.2.0。