我真的希望有人可以帮助我解决这个问题。我正在关注 Michael Hartl 的 Rails 3 教程,并且在第 5 章中遇到了困难。昨天我花了大部分时间试图通过回顾所有工作来解决这个问题,并解决了 Stack Overflow 上的所有相关问题。那里有大量信息,但都没有解决我的问题,老实说,我不明白我哪里出错了。
一切进展顺利(该网站的工作方式完全符合书中的说明),直到作者引导您清理您的“static_pages_spec.rb”文件。我的目前处于这种状态:
require 'spec_helper'
describe "Static pages" do
subject { page }
describe "Home page" do
before { visit root_path }
it { should have_selector('h1', text: 'Sample App') }
it { should have_selector('title', text: full_title('')) }
it { should_not have_selector 'title', text: '| Home' }
end
describe "Help page" do
before { visit help_path }
it { should have_selector('h1', text: 'Help') }
it { should have_selector('title', text: full_title('Help')) }
end
describe "About page" do
before { visit about_path }
it { should have_selector('h1', text: 'About') }
it { should have_selector('title', text: full_title('About Us')) }
end
describe "Contact page" do
before { visit contact_path }
it { should have_selector('h1', text: 'Contact') }
it { should have_selector('title', text: full_title('Contact')) }
end
end
如作者所述,我也有两个“spec/support/utilities.rb”文件:
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
结尾
以及“app/helpers/application_helper.rb”中的以下内容
module ApplicationHelper
#Returns the full title based on a per-page basis.
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
结尾
当我运行 'guard' (我已经完成了 Guard、Spork 等的设置)时,我遇到了以下三个失败:
1) 静态页面帮助页面失败/错误:它 { should have_selector('title', text: full_title('Help')) } 期望 css "title" 和文本 "Ruby on Rails Tutorial Sample App | Help" 返回 >something # ./spec/requests/static_pages_spec.rb:19:in `block (3 levels) in '
2) 静态页面关于页面失败/错误:它 { should have_selector('title', text: full_title('About Us')) } 预期的 css "title" 和文本 "Ruby on Rails Tutorial Sample App | About Us" to > return something # ./spec/requests/static_pages_spec.rb:26:in `block (3 levels) in '
3) 静态页面联系页面失败/错误:它 { should have_selector('title', text: full_title('Contact')) } 期望 css “title” 和文本 “Ruby on Rails Tutorial Sample App | Contact” >return something # ./spec/requests/static_pages_spec.rb:33:in `block (3 levels) in '
该站点工作正常(路由似乎是正确的),但我确实注意到,如果我查看任何页面的源代码,:title 始终是“Ruby on Rails Tutorial Sample App”。' | :page_title ' 似乎没有放在前面。我只是找不到我做了什么来打破它,因为我的 rspec 测试在本书的早期阶段工作。
我已经看到了一堆这样的问题,那些试图帮助的人要求访问 GitHub 上的代码。为了快速找到我的错误,我将所有代码都放在那里:
https://github.com/rbrowndev/sampleapp.git
https://github.com/rbrowndev/sampleapp/tree/filling-in-layout
由于我是新手,如果存储库没有正确配置以允许您克隆项目,请告诉我。我相信我是这样设置的,但是由于我是新手...
如果有人可以提供帮助,将不胜感激。如果您愿意我在 SO 上而不是在 GitHub 上发布更多源代码,请告诉我。
谢谢。