Ruby on rails RoR静态页面帮助页面的标题应为';帮助';

Ruby on rails RoR静态页面帮助页面的标题应为';帮助';,ruby-on-rails,ruby,ruby-on-rails-4,rspec,Ruby On Rails,Ruby,Ruby On Rails 4,Rspec,我正在学习Michael Hartl的Ruby on Rails教程,我正在做第5章的练习。有人能解释一下为什么这次考试不及格吗 我的路线.rb SampleApp::Application.routes.draw do root 'static_pages#home' match '/help', to: 'static_pages#help', via: 'get' match '/about', to: 'static_pages#about', via:

我正在学习Michael Hartl的Ruby on Rails教程,我正在做第5章的练习。有人能解释一下为什么这次考试不及格吗

我的路线.rb

SampleApp::Application.routes.draw do
  root 'static_pages#home'
  match '/help',    to: 'static_pages#help',    via: 'get'
  match '/about',   to: 'static_pages#about',   via: 'get'
  match '/contact', to: 'static_pages#contact', via: 'get
end
我的静态页面\u spec.rb

require 'spec_helper'

describe "Static pages" do

  let(:base_title) { "Ruby on Rails Tutorial Sample App" }

  describe "Home page" do

    it "should have the h1 'Sample App'" do
      visit root_path
      expect(page).to have_content('Sample App')
    end

    it "should have the base title" do
      visit root_path
      expect(page).to have_title("Ruby on Rails Tutorial Sample App")
    end

    it "should not have a custom page title" do
      visit root_path
      expect(page).not_to have_title('| Home')
    end
  end

  describe "Help page" do

    it "should have the h1 'Help'" do
      visit help_path
      expect(page).to have_content('Help')
    end

    it "should have the title 'Help'" do
      visit help_path
      expect(page).to have_title("Ruby on Rails Tutorial Sample App | Help")
    end
  end

  describe "About page" do

    it "should have the h1 'About Us'" do
      visit about_path
      expect(page).to have_content('About Us')
    end

    it "should have the title 'About Us'" do
      visit about_path
      expect(page).to have_title("Ruby on Rails Tutorial Sample App | About Us")
    end
  end

  describe "Contact page" do

    it "should have the content 'Contact'" do
      visit contact_path
      expect(page).to have_content('Contact')
    end

    it "should have the title 'Contact'" do
      visit contact_path
      expect(page).to have_title("Ruby on Rails Tutorial Sample App | Contact")
    end
  end
end
我的测试: gvyntyk@gvyntyk-r60:~/rails\u projects/sample\u app$rspec spec/requests/static\u pages\u spec.rb ……F……F

Failures:

  1) Static pages Help page should have the title 'Help'
     Failure/Error: expect(page).to have_title("Ruby on Rails Tutorial Sample App | Help")
       expected #has_title?("Ruby on Rails Tutorial Sample App | Help") to return true, got false
     # ./spec/requests/static_pages_spec.rb:34:in `block (3 levels) in <top (required)>'

  2) Static pages About page should have the title 'About Us'
     Failure/Error: expect(page).to have_title("Ruby on Rails Tutorial Sample App | About Us")
       expected #has_title?("Ruby on Rails Tutorial Sample App | About Us") to return true, got false
     # ./spec/requests/static_pages_spec.rb:47:in `block (3 levels) in <top (required)>'

Finished in 0.67805 seconds
9 examples, 2 failures

Failed examples:

rspec ./spec/requests/static_pages_spec.rb:32 # Static pages Help page should have the title 'Help'
rspec ./spec/requests/static_pages_spec.rb:45 # Static pages About page should have the title 'About Us'

看起来您的测试很好,所以您的测试可能失败了,因为标题实际上没有正确设置

我想您只需要在视图中添加以下内容:

<% provide(:title, 'Title') %>


或者确保您发送的标题与您测试的标题相同。

如果没有查看代码,我们无法查看您是否真的访问此页面。试着查看服务器控制台,看看是否有302错误。我没有得到302错误,我添加了日志服务器,我可以打开/about和/help页面。但我不确定它是否正常工作并通过了测试。这可能是因为您的标题实际上没有在视图中设置吗?是的。。。我没有在适当的文件中添加和。谢谢,伙计们。酷,我正确地回答了下面的问题。顺便说一句。。。为什么我们需要使用跌落试验?我现在不明白。只需检查一下测试是否完全有效?当使用TDD(测试驱动开发)时,我们在通过测试(绿色)之前先编写失败的测试(红色),因为这样我们就更有信心测试正确的东西。如果我们看到测试以我们期望的方式失败,我们可以相当肯定我们的测试正在工作。您不必先测试(TDD),但它通常被认为是Ruby社区的最佳实践。哈特尔对何时进行测试有一个旁白:我希望这回答了你的问题。如果我误解了你的要求,请告诉我。另外,我注意到你是新来的。如果您认为此答案有帮助,可以将其标记为已接受的答案。了解更多有关接受StackOverflow答案的信息:谢谢,本杰明,我了解坠落测试。至少我这么认为:)。我认为这种练习会帮助我更多更好地理解。
<% provide(:title, 'Title') %>