2

これはかなり簡単に答えられるはずです、私は願っています。簡単なことかもしれませんが、周りを見回しても答えが見つかりませんでした。

私のスペックを実行すると

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ボタンがありますが、ブラウザーではすべてが正常に機能します。このページは、ユーザーがDeviseによって認証されている場合にのみ表示できます。

user = FactoryGirl.create(:user_with_correspondences, correspondences_count: 1)

その後私は、

sign_in_as_a_valid_user(user)

これは私がスペック/サポートで定義したヘルパーです...だからすべてが機能しているはずだと思いました。

私の場合、代わりに

get correspondences_path

私が得るのは、ページ上のdoctype宣言(print 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

support / 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

イライラする...私がそれをテストしていないのに、なぜFacebookomniauthへのリンクを試しているのか理解できません...

4

1 に答える 1

0

私の場合、user.rb のデバイス構成行が認証プロバイダー名と一致しませんでした。私はしようとし=link_to "login using Twitter", user_omniauth_authorize_path(:twitter)ていて、構成をuser.rb読み取ろうとしていましdevise :omniauthable, :omniauth_providers => [:twiter]た(「t」が欠落していたことに注意してください)

于 2014-01-30T18:58:49.723 に答える