2011-05-18 33 views
6

我有一個user_controller_spec.rb失敗,我不知道爲什麼。幫助追蹤控制器規格失敗的原因

require 'spec_helper' 

describe UsersController do 

    describe "GET 'index'" do 
    it "should be successful" do 
     get 'index' 
     response.should be_success 
    end 
    end 


end 

當我運行rspec的,它說:

Failures: 

    1) UsersController GET 'index' should be successful 
    Failure/Error: response.should be_success 
     expected success? to return true, got false 
    # ./spec/controllers/users_controller_spec.rb:8 

Finished in 0.17047 seconds 
1 example, 1 failure 

要在瀏覽器中的/ home /頁工作正常。

有沒有辦法得到更詳細的原因爲什麼它失敗?

注:

這是Rails3中,和我使用RSpec的。

我也有水豚寶石,並搜索我的解決方案顯示只有參考水豚是在我的寶石和gem.lock文件。

回答

1

這可能是,你不只是呈現頁面,但重定向。爲了看到實際的反應是什麼

response.should == 1 

:要檢查什麼可能是錯的,我會做我的規格類似。這會給你一個關於發生的事情的線索。

+0

確定它現在工作謝謝(固定的東西,這是重定向),但總是失敗,如果我做response.should == 1它是做什麼的? – Blankman 2011-05-18 21:31:39

+0

是的,這個失敗的目的:)你只是用它來檢查你得到的實際價值是什麼(它會說像預期的東西:成功,得到了:重定向。 – Spyros 2011-05-18 21:36:45

2

您可以嘗試輸出響應主體以查看消息是什麼。可能是您登錄的用戶沒有正確的權限(或者匿名訪問一個網頁,您必須登錄才能看到),從而導致測試環境中出現奇怪的視圖錯誤。

get 'index' 
puts response.body.inspect 
puts response.status.inspect 
... 
response.should be_success 

response.body將包含響應的HTML輸出,所以你應該能夠告訴它爲什麼不是一個成功的(希望這將有一個堆棧跟蹤或者是重定向或東西)。另外請記住重定向不是「成功」。如果我沒有記錯be_success確保HTTP狀態代碼是200之一,重定向通常是302或304,所以不計算。如果打算重定向,請嘗試response.should be_redirect

+0

偉大的提示,謝謝!順便說一句,可以訪問請求對象,看到原始網址請求等? – Blankman 2011-05-18 21:32:11