rails3.2 + rspec + capybara1.0测试设计google-oauth2.0
我正在使用带有ruby1.9.2导轨的capybara 1.0 3.2这是我的测试:
#spec/features/google_login_spec.rb require 'spec_helper' describe "the signin process", type: :feature do before do puts user_omniauth_authorize_path(:google_oauth2) #/users/auth/google_oauth2 visit user_omniauth_authorize_path(:google_oauth2) end it {#somethings} end
但我有这个错误:
Failures: 1) the signin process Failure/Error: visit user_omniauth_authorize_path(:google_oauth2) ActionController::RoutingError: No route matches [GET] "/o/oauth2/auth" # ./spec/features/google_login_spec.rb:9:in `block (2 levels) in '
我的路线文件就是这个
#config/routes.rb Booking::Application.routes.draw do #https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview#using-omniauth-without-other-authentications devise_for :users , controllers: {omniauth_callbacks: "users/omniauth_callbacks"} devise_scope :user do get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session end end $rake routes user_omniauth_authorize GET|POST /users/auth/:provider(.:format) users/omniauth_callbacks#passthru {:provider=>/google_oauth2/} user_omniauth_callback GET|POST /users/auth/:action/callback(.:format) users/omniauth_callbacks#(?-mix:google_oauth2) new_user_session GET /sign_in(.:format) devise/sessions#new destroy_user_session GET /sign_out(.:format) devise/sessions#destroy
应用程序工作正常,没有问题。 问题是当水豚访问user_omniauth_authorize_path(:google_oauth2)时。 我不知道要解决,你能帮助我吗?
解:
#spec/features/google_login_spec.rb require 'spec_helper' describe "the signin process", type: :feature do before do puts user_omniauth_authorize_path(:google_oauth2) #/users/auth/google_oauth2 Capybara.current_driver = :selenium #change drive according whit https://github.com/jnicklas/capybara#drivers visit user_omniauth_authorize_path(:google_oauth2) end it {#somethings} end
Capybara使用的默认RackTest驱动程序不支持重定向到外部站点。 您需要使用Selenium或其他替代驱动程序。
有关选择驱动程序的说明,请参阅https://github.com/jnicklas/capybara#drivers 。
- 未定义的方法’更改’为:更新时间戳值时的Fixnum
- Ruby on Rails:如何使用OAuth2 :: AccessToken.post?
- 在服务器端validation应用内购买Android / Google
- Google Drive API监视400错误Ruby on Rails
- 是否可以只下载没有附件的IMAP邮件?
- 这对于sinatra + angular.js +自定义提供程序的Oauth2工作流的概念是否正确?
- 门卫没有网络视图
- instagram api – 神秘的回应; 不确定是否工作,无法用此测试omniauth
- Google OAuth 2 redirect_uri_mismatch – OmniAuth Rails应用