這應該是相當容易回答,我希望。儘管它可能是直截了當的,但我確實環顧四周,找不到答案。請求規格與設計
當運行我的規格和
visit correspondences_path
我得到
Failure/Error: visit '/correspondences'
ActionView::Template::Error:
No route matches {:controller=>"users/omniauth_callbacks", :action=>"passthru", :provider=>:facebook}
# ./app/views/layouts/_navigation.html.erb:12:in `_app_views_layouts__navigation_html_erb___642964846_100119950'
很顯然,我得到了我的導航欄omniauth按鈕,但一切都在瀏覽器中正常工作。該網頁是唯一可見的,如果用戶是通過設計驗證:
user = FactoryGirl.create(:user_with_correspondences, correspondences_count: 1)
後來才知道,
sign_in_as_a_valid_user(user)
這是我在規格/支持定義的幫手......所以一切都應該是工作,我思想。
如果我,而不是
get correspondences_path
我得到的是一個doctype聲明(當打印page.html中)在頁面上,任何其他主張通過,即使他們不應該。
我很模糊,因爲我確信我在這裏做了一些愚蠢的事情,有人會很快將它指出來,而不必發佈我不太感興趣的所有代碼。 我的感謝提前。
路線很簡單:
authenticated :user do
root :to => 'correspondences#index'
end
root :to => 'home#index'
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
resources :users, :only => [:show, :index]
resources :correspondences
resources :recipients
支持/ request_macros.rb
module ValidUserRequestHelper
def sign_in_as_a_valid_user(user)
post_via_redirect user_session_path, 'user[email]' => user.email, 'user[password]' => user.password
end
和spec_helper.rb
...
config.include ValidUserRequestHelper, :type => :request
...
end
所以在規格:
...
it "shold display a users corresponces" do
user = FactoryGirl.create(:user_with_correspondences, correspondences_count: 1)
sign_in_as_a_valid_user(user)
visit correspondences_path
page.all('.correspondences').count == 3 #never gets here
end
令人沮喪...我不明白爲什麼它甚至嘗試鏈接到Facebook的omniauth,當我沒有測試...
你能粘貼你的'routes.rb'嗎?也許你需要像'correspondences_path(user)'或其他東西一樣傳遞一些東西到你的'correspondences_path'中。 – 2012-07-21 02:59:56
發佈了它,然後一些 – 2012-07-21 05:36:39
所以,我終於弄明白了..pretty dumb:在devise.rb中,對於facebook,我指定了我的Facebook SECRET鍵用於生產和開發,沒有任何東西用於測試....哇,哇,哇 – 2012-07-22 06:27:20