2

我真的希望有人可以帮助我解决这个问题。我正在关注 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 上发布更多源代码,请告诉我。

谢谢。

4

1 回答 1

1

有一个错误使我们无法检查标题字段中的文本(实际上,它是任何不可见的内容): https ://github.com/jnicklas/capybara/issues/844

到目前为止,这似乎是在我们的规范中启用检查标题文本的最佳方法: https ://stackoverflow.com/a/13755730/359957

于 2013-02-17T18:35:53.373 回答