我正在尝试使用Twitter和Facebook编写身份验证测试。我正在使用Devise和Omniauth。当我尝试它时它可以正常工作,但我无法通过测试。
我正在关注instructions,但它对我来说不够深入,而且我做的事情有点不同(已经有一些代码库)。我有omniauth_callbacks和注册的自定义控制器。
我的问题是,当我运行测试时,它说:
(::) failed steps (::)
No route matches "/oauth/authorize" (ActionController::RoutingError)
<internal:prelude>:10:in `synchronize'
(eval):2:in `click_link'
./features/step_definitions/web_steps.rb:57:in `/^(?:|I )follow "([^"]*)"$/'
features/link_twitter.feature:19:in `And I link twitter'
Failing Scenarios:
cucumber features/link_twitter.feature:16 # Scenario: User links twitter
此/oauth/authorize
路线来自何处以及如何处理?
它看起来不像是我的OmniauthCallbacksController
。它遵循链接然后死亡。我认为它与测试模式期间的Omniauth回调方法有关,但我不确定如何更改/管理它。
更新:以下是我的Devise路线。
devise_for :users, :controllers => {
:omniauth_callbacks => "users/omniauth_callbacks",
:registrations => 'registrations',
:passwords => 'passwords',
:sessions => 'sessions',
:confirmations => 'confirmations'
} do
match 'confirmations/unconfirmed' => 'confirmations#unconfirmed', :as => :unconfirmed
match 'confirmations/send_advisor_confirmation/:id' => 'confirmations#unregistered_advisor_confirmation', :as => :send_advisor_confirmation
get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end
答案 0 :(得分:15)