Devise + Omniauth - 测试 - 没有路由匹配“/ oauth / authorize”

时间:2011-08-15 22:04:39

标签: ruby-on-rails-3 devise omniauth

我正在尝试使用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

1 个答案:

答案 0 :(得分:15)

我忘记将以下内容放入env.rb

# features/support/env.rb
OmniAuth.config.test_mode = true

有关测试here的更多信息,请参阅。