2012-10-13 55 views
3

我想在黄瓜测试我的Facebook登录按钮。我正在使用Omniauth。Omniauth黄瓜测试 - 路由错误

这是我在/features/support/env.rb

Before do 
    OmniAuth.config.test_mode = true 
    OmniAuth.config.add_mock(:facebook, { 
    provider: 'facebook', 
    uid: '1259910065', 
    info: { 
     name: 'Test Name', 
     email: '[email protected]' 
    } 
    }) 
end 

After do 
    OmniAuth.config.test_mode = false 
end 

然而,当我尝试访问/auth/facebook在测试中,我得到:

No route matches [GET] "/auth/facebook" (ActionController::RoutingError) 

更新:

我也试着env.rb文件中的require 'omniauth',但我不确定这是否必要。

+0

你使用的是omniauth-facebook gem吗? https://github.com/mkdynamic/omniauth-facebook omniauth本身不支持Facebook,你需要一个策略:https://github.com/intridea/omniauth/wiki/List-of-Strategies –

+0

该网站的作品大。当我点击浏览器中的按钮时,它会转到“/ auth/facebook''并正确登录。所以是的,我使用'facebook-omniauth'宝石。好问题。 – ardavis

+1

我只关心测试。 – ardavis

回答

0

我面临这个问题,我解决了一些改变行我的routes.rb

match 'auth/:provider/callback', to: 'sessions#create', via: [:get, :post] 

如果你读here omniauth说,在routes.rb中添加此行get '/auth/:provider/callback', to: 'sessions#create'但回调将请求方法发布一个名为_method的变量。

我希望这个帮助