我在我的 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 开发人员必须注意这一点。