Rails 教程 - Ch. 5 更漂亮的测试 Rspec
Posted
技术标签:
【中文标题】Rails 教程 - Ch. 5 更漂亮的测试 Rspec【英文标题】:Rails Tutorial - Ch. 5 Prettier Tests Rspec 【发布时间】:2012-08-26 11:25:08 【问题描述】:我真的希望有人可以帮助我解决这个问题。我正在关注 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“标题”和文本“Ruby on Rails 教程示例应用程序 | 帮助”返回 >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” > 返回一些东西 # ./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 一些东西 # ./spec/requests/static_pages_spec.rb:33:in `block (3 levels) in '
该站点工作正常(路由似乎是正确的),但我确实注意到,如果我查看任何页面的源代码,:title 始终是“Ruby on Rails 教程示例应用程序”。 ' | :page_title ' 似乎没有放在前面。我只是找不到我做了什么来打破它,因为我的 rspec 测试在本书的早期阶段工作。
我看到了一堆这样的问题,那些试图提供帮助的人请求访问 GitHub 上的代码。为了快速找到我的错误,我将所有代码都放在那里:
https://github.com/rbrowndev/sampleapp.git
https://github.com/rbrowndev/sampleapp/tree/filling-in-layout
由于我是新手,如果存储库未正确配置以允许您克隆项目,请告诉我。我相信我是这样设置的,但由于我是新手...
如果有人可以提供帮助,将不胜感激。如果您愿意我在 SO 上而不是在 GitHub 上发布更多源代码,请告诉我。
谢谢。
【问题讨论】:
【参考方案1】:有一个错误使我们无法检查标题字段中的文本(实际上,它是任何不可见的内容): https://github.com/jnicklas/capybara/issues/844
到目前为止,这似乎是在我们的规范中启用检查标题文本的最佳方式: https://***.com/a/13755730/359957
【讨论】:
以上是关于Rails 教程 - Ch. 5 更漂亮的测试 Rspec的主要内容,如果未能解决你的问题,请参考以下文章
CH2 Hartl 教程迁移正在等待。要解决此问题,请运行: bin/rake db:migrate RAILS_ENV=development
如何使用 twitter bootstrap by rails framework 显示漂亮的错误消息?
ruby 2.5 是不是已经用 Rails 4.2 测试过?