1

我在我的 ruby​​ on rails 应用程序中设置了基本的 facebook 身份验证。我遵循了http://railscasts.com/episodes/360-facebook-authentication?view=asciicast教程。

我正在尝试为处理与 Facebook 服务器通信的 session_controller 编写单元规范。这是我的控制器的样子:

def create
 user = User.from_omniauth(env["omniauth.auth"])
 session[:user_id] = user.id
 redirect_to root_url
end

def destroy
 sign_out
 redirect_to root_url
end

private
 def sign_in(user)
  session[:user_id] = user.id
 end

 def sign_out
  session[:user_id] = nil
  @current_user = nil
 end

我的规格是这样的:

it 'should set session variable and redirect to root path' do

  get :create
  expect(session[:user_id].present?).to eq true
  expect(response).to be_success
  expect(response).to redirect_to(root_path)

end

结尾

但是通过这个设置我得到了以下错误
Failure/Error: get :create ActionController::UrlGenerationError: No route matches {:action=>"create", :controller=>"sessions"

我在 routes.rb 文件中添加了以下内容

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

大佬们有什么解决办法吗?顺便说一句,这真的有必要测试这部分代码吗?因为第三方 gem 开发人员必须注意这一点。

4

0 回答 0