2014-04-02 67 views
1

我同樣遵循M哈特爾的 「Ruby on Rails的教程」,章3.2.2RSpec的測試通不過,即使test.log中顯示ActionNotFound

當我添加/ static_pages /即將routes.rb中,即使是 '關於' 行動不在static_pages_controller.rb中定義,rspec測試通過。

這讓我瘋狂!

我使用的紅寶石2.1.1,RSpec的護欄2.14.2,水豚2.1.0

static_pages_spec.rb:

require 'spec_helper' 
describe "StaticPages" do 
    describe "About" do 
    it "should have the content 'About'" do 
     visit '/static_pages/about' 
     expect(page).to have_content('About') 
    end 
    end 
end 

的routes.rb:

RortSampleApp::Application.routes.draw do 
    get "static_pages/about" 
end 

static_pages_controller.rb:

class StaticPagesController < ApplicationController 
end 

命令運行RSpec的測試結果&:

$ rspec spec/requests/static_pages_spec.rb 
. 

Finished in 0.02604 seconds 
1 example, 0 failures 

Randomized with seed 61832 

而且test.log中:

(0.1ms) begin transaction 
Started GET "/static_pages/about" for 127.0.0.1 at 2014-04-02 01:59:45 -0700 

AbstractController::ActionNotFound - The action 'about' could not be found for  StaticPagesController: 
    actionpack (4.0.4) lib/abstract_controller/base.rb:131:in `process' 
    actionpack (4.0.4) lib/abstract_controller/rendering.rb:44:in `process' 

回答

0

在M.Hartl的Ruby on Rails的教程書的,第二版的,擁有的Gemfile版本1.1.2水豚。如果你在你的Gemfile裏改變水豚的版本,我希望它更好。

group :test do 
    gem 'capybara', '1.1.2' 
... 
end 

此外,rspec-rails gem版本在第2版的Gemfile中也有所不同。因此,如果上述更改無法正常工作,請嘗試下列rspec-rails版本:2.11.0,以及Capybara版本更改。 (我曾與水豚版本2.1.0和2.2.0的困難)

group :development, :test do 
.. 
    gem 'rspec-rails', '2.11.0' 
.. 
end 

Gemfile for tutorial's 2nd edition

+0

嘗試,但它並沒有幫助。與以前相同的結果。 – user3488516

+0

對不起,我剛剛意識到我的測試工作正常(我應該首先進行適當的檢查)。但仔細看後,我發現我使用了不同的水豚版本來使它工作:gem'capybara','〜> 1.1.2'。我有版本2.1.0和2.2.0的問題。 – jyrkim

+0

由於水豚1.1.2不再可用,我使用1.1.4;但沒有工作。然後我將rspec-rails更改爲2.11.0,但仍然無效。而且,我還發現了一個奇怪的問題,在我從static_pages_controller.rb中刪除'about'動作並存在app/view/static_pages/about.html.erb後,我仍然可以通過瀏覽器訪問/ static_pages/about!我在使用RUBY 2.1.1,有什麼不對嗎? – user3488516