我正在通过Michael Hartl's Ruby on Rails Tutorial Chapter 5 exercises工作,我一直在进行一项我无法弄清楚的失败测试。
我正在使用click_link问题并且所有大写字母都匹配,我相信所有其他文件都是正确的。我真的不确定这里有什么问题。我试过重启Spork。每当我注释掉第一次click_link测试时,它会为第二次测试提出错误,依此类推......请随意查看http://github.com/sambaek/sample_app处的代码。
有人可以帮帮我吗?非常感谢!
include ApplicationHelper
require 'spec_helper'
describe "Static pages" do
subject { page }
shared_examples_for "all static pages" do
it { should have_selector('h1', text: heading) }
it { should have_selector('title', text: full_title(page_title)) }
end
describe "Home page" do
before { visit root_path }
let(:heading) { 'Sample App' }
let(:page_title) { '' }
it_should_behave_like "all static pages"
it { should_not have_selector 'title', text: '| Home' }
end
describe "Help page" do
before { visit help_path }
let(:heading) { 'Help' }
let(:page_title) { 'Help' }
it_should_behave_like "all static pages"
end
describe "About page" do
before { visit about_path }
let(:heading) { 'About Us' }
let(:page_title) { 'About Us' }
it_should_behave_like "all static pages"
end
describe "Contact page" do
before { visit contact_path }
let(:heading) { 'Contact' }
let(:page_title) { 'Contact' }
it_should_behave_like "all static pages"
end
it "should have the right links on the layout" do
visit root_path
click_link "About"
page.should have_selector 'title', text: full_title('About Us')
click_link "Help"
page.should have_selector 'title', text: full_title('Help')
click_link "Contact"
page.should have_selector 'title', text: full_title('Contact')
click_link "Home"
click_link "Sign up now!"
page.should have_selector 'title', text: full_title('Sign Up')
click_link "sample app"
page.should_not have_selector 'title', text: full_title(' | Home')
end
end
require 'spec_helper'
describe ApplicationHelper do
describe "full_title" do
it "should include the page title" do
full_title("foo").should =~ /foo/
end
it "should include the base title" do
full_title("foo").should =~ /^Ruby on Rails Tutorial Sample App/
end
it "should not include a bar for the home page" do
full_title("").should_not =~ /\|/
end
end
end
module ApplicationHelper
def full_title(page_title)
base_title = "Ruby on Rails Tutorial Sample App"
if page_title.empty?
base_title
else
"#{base_title} | #{page_title}"
end
end
end
rspec spec/
..F............
Failures:
1) Static pages should have the right links on the layout
Failure/Error: page.should have_selector 'title', text: full_title('About Us')
expected css "title" with text "Ruby on Rails Tutorial Sample App | About Us" to return something
# ./spec/requests/static_pages_spec.rb:52:in `block (2 levels) in <top (required)>'
Finished in 4.37 seconds
15 examples, 1 failure
Failed examples:
rspec ./spec/requests/static_pages_spec.rb:49 # Static pages should have the right links on the layout
答案 0 :(得分:0)
问题是因为layouts/footer
和layouts/header
中的链接无法访问。它们是可点击的规范,但它们只是转到#
而不是正确的页面。如果你更正了这些链接,那么规范就可以了。
在app/views/layouts/_footer.html.erb
:
<li><%= link_to "About", '/about' %></li>
<li><%= link_to "Contact", '/contact' %></li>
在app/views/layouts/_header.html.erb
:
<li><%= link_to "Home", '/' %></li>
<li><%= link_to "Help", '/help' %></li>
答案 1 :(得分:0)
为什么不继续使用指定的路径路径变量(例如about_path)?