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

Rya*_*nJM 5 devise omniauth ruby-on-rails-3

我正在尝试用Twitter和Facebook编写身份验证测试.我正在使用Devise和Omniauth.当我尝试它它正常工作,但我不能让测试通过它.

我正在遵循指示,但它对我来说不够深入,而且我做的事情有点不同(已经有一些代码库).我有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
Run Code Online (Sandbox Code Playgroud)

/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
Run Code Online (Sandbox Code Playgroud)

Rya*_*nJM 15

我忘记了以下内容 env.rb

# features/support/env.rb
OmniAuth.config.test_mode = true
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请阅读此处的测试.