2013-07-25 94 views
0

我正在使用brew安裝和rvm在mac osx10.8上安裝Ruby 1.8.7。當我做bundle exec spec spec/requests/static_pages_spec.rb我得到這些錯誤Ruby 1.8.7上的Rspec故障

FFFFF.FFF 

Failures: 

    1) Static pages Home page should have the h1 'Sample App' 
    Failure/Error: visit root_path 
    NameError: 
     undefined local variable or method `root_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x104b5a108> 
    # ./spec/requests/static_pages_spec.rb:8 

    2) Static pages Home page should have the base title 
    Failure/Error: visit root_path 
    NameError: 
     undefined local variable or method `root_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x104b45258> 
    # ./spec/requests/static_pages_spec.rb:13 

    3) Static pages Home page should not have a custom page title 
    Failure/Error: visit root_path 
    NameError: 
     undefined local variable or method `root_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x104b3ea48> 
    # ./spec/requests/static_pages_spec.rb:18 

    4) Static pages Help page should have the h1 'Help' 
    Failure/Error: visit help_path 
    ActionView::Template::Error: 
     undefined method `full_title' for #<#<Class:0x106d53c50>:0x106d509b0> 
    # ./app/views/layouts/application.html.erb:4:in `_app_views_layouts_application_html_erb__291545742_2204731780' 
    # ./spec/requests/static_pages_spec.rb:26 

    5) Static pages Help page should have the title 'Help' 
    Failure/Error: visit help_path 
    ActionView::Template::Error: 
     undefined method `full_title' for #<#<Class:0x106d53c50>:0x106cde630> 
    # ./app/views/layouts/application.html.erb:4:in `_app_views_layouts_application_html_erb__291545742_2204731780' 
    # ./spec/requests/static_pages_spec.rb:31 

    6) 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") 
    NoMethodError: 
     undefined method `has_title?' for #<Capybara::Session> 
    # ./spec/requests/static_pages_spec.rb:45 

    7) Static pages Contact page should have the content 'Contact' 
    Failure/Error: visit contact_path 
    ActionView::Template::Error: 
     undefined method `full_title' for #<#<Class:0x106d53c50>:0x106c303c8> 
    # ./app/views/layouts/application.html.erb:4:in `_app_views_layouts_application_html_erb__291545742_2204731780' 
    # ./spec/requests/static_pages_spec.rb:52 

    8) Static pages Contact page should have the title 'Contact' 
    Failure/Error: visit contact_path 
    ActionView::Template::Error: 
     undefined method `full_title' for #<#<Class:0x106d53c50>:0x106c07298> 
    # ./app/views/layouts/application.html.erb:4:in `_app_views_layouts_application_html_erb__291545742_2204731780' 
    # ./spec/requests/static_pages_spec.rb:57 

Finished in 0.41599 seconds 
9 examples, 8 failures 

Failed examples: 

rspec ./spec/requests/static_pages_spec.rb:7 # Static pages Home page should have the h1 'Sample App' 
rspec ./spec/requests/static_pages_spec.rb:12 # Static pages Home page should have the base title 
rspec ./spec/requests/static_pages_spec.rb:17 # Static pages Home page should not have a custom page title 
rspec ./spec/requests/static_pages_spec.rb:25 # Static pages Help page should have the h1 'Help' 
rspec ./spec/requests/static_pages_spec.rb:30 # Static pages Help page should have the title 'Help' 
rspec ./spec/requests/static_pages_spec.rb:43 # Static pages About page should have the title 'About Us' 
rspec ./spec/requests/static_pages_spec.rb:51 # Static pages Contact page should have the content 'Contact' 
rspec ./spec/requests/static_pages_spec.rb:56 # Static pages Contact page should have the title 'Contact' 

有誰知道如何解決任何/所有這些錯誤的? 這裏是我的相關文件: 的routes.rb

SampleApp::Application.routes.draw do 

    match '/static_pages/home', :to =>'static_pages#home' 
    match '/help' => 'static_pages#help', :via => 'get' 
    match '/about' => 'static_pages#about', :via => 'get' 
    match '/contact' => 'static_pages#contact', :via => 'get' 

    get "static_pages/home" 

    get "static_pages/help" 

    get "static_pages/about" 

    get "static_pages/contact" 

static_pages_spec.rb

require 'spec_helper' 

describe "Static pages" do 

    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 

我已經更新了我的Xcode,libiconv的,以及相關的一切。我目前大部分是通過ruby on rails教程第5章的方式,而我對於我的生活不知道是什麼導致了這些錯誤。我也跟着教程完美到目前爲止與少數例外,如改變冒號方法爲哈希火箭和不同的寶石版本等

耙結果:

小號

tatic_pages_home  /static_pages/home(.:format) static_pages#home 
       help GET /help(.:format)     static_pages#help 
       about GET /about(.:format)    static_pages#about 
      contact GET /contact(.:format)    static_pages#contact 
        GET /static_pages/home(.:format) static_pages#home 
    static_pages_help GET /static_pages/help(.:format) static_pages#help 
    static_pages_about GET /static_pages/about(.:format) static_pages#about 
static_pages_contact GET /static_pages/contact(.:format) static_pages#contact 
+0

可能希望將您的粘貼代碼修剪爲一些最簡單的示例。 –

回答

0

當您創建使用matchget這樣的路線,默認情況下,您不會獲得像help_path這樣的命名路線。運行rake routes以查看哪些路由已配置,以及他們的命名助手(如果有)是什麼。您可能沒有多個命名路線。

您可以使用:as命名您的路線:

match '/help' => 'static_pages#help', :via => 'get', :as => 'help' 

,將讓你help_pathhelp_url。如果您使用例如resources :help,很多魔法都是爲你完成的。在通往靜態資產的路線中,使用:as是最佳方法。

+0

ooohhh這是有道理的,我加了:as =>但我仍然得到錯誤。這是我的耙路線的結果: home /static_pages/home(.:format)static_pages#home help GET /help(.:format)static_pages#help about /about(.:format)static_pages#about 聯繫GET /contact(.:format) ...等 – Bhetzie

+0

你可以粘貼到格式化的問題,或使用完整的'rake [gist](https://gist.github.com/)路線輸出?我上面的答案只能解決'help_path';你仍然需要設置'root_path'和其他的。如果你可以發佈完整的'routes.rb'作爲一個要點,那會有幫助。 –

+0

Fwiw,這並沒有解決我的問題 –