Rails教程 - Ch。 5更漂亮的测试Rspec

时间:2012-08-31 15:55:10

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 github rspec-rails

我真的希望有人可以帮我解决这个问题。我正在关注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,Spork等的设置)我得到以下三个失败:

  

1)静态页面帮助页面       失败/错误:它{should have_selector('title',text:full_title('Help'))}         预期css“标题”与文本“Ruby on Rails Tutorial Sample App | Help”返回>某事       #./spec/requests/static_pages_spec.rb:19:在'块(3级)中'

     

2)静态页面关于页面       失败/错误:它{should have_selector('title',text:full_title('About Us'))}         预期css“标题”与文本“Ruby on Rails教程示例应用程序|关于我们”to gt;返回一些东西       './spec/requests/static_pages_spec.rb:26:in'块(3级)in'

     

3)静态页面联系页面       失败/错误:它{should have_selector('title',text:full_title('Contact'))}         预期css“标题”与文本“Ruby on Rails Tutorial Sample App | Contact”to>返回一些东西       './spec/requests/static_pages_spec.rb:33:in'块(3级)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,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:1)

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

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