ruby-on-rails – 使用Devise和RSpec测试身份验证重定向
发布时间:2020-12-17 02:14:41 所属栏目:百科 来源:网络整理
导读:我有一个我正在研究的示例Rails应用程序,因此我可以开始熟悉BDD. 现在我正在使用Devise来处理我的用户身份验证. 我有一个Task模型,需要用户登录才能访问新的,创建,编辑和销毁操作. 我有以下代码: 请求/ tasks_spec.rb describe "Tasks" do it "redirects to
我有一个我正在研究的示例Rails应用程序,因此我可以开始熟悉BDD.
现在我正在使用Devise来处理我的用户身份验证. 我有一个Task模型,需要用户登录才能访问新的,创建,编辑和销毁操作. 我有以下代码: 请求/ tasks_spec.rb describe "Tasks" do it "redirects to sign in for new task if no user logged in" do visit new_task_path response.should redirect_to(new_user_session_path) end end 现在,当我运行此测试时,我希望它失败,因为我没有向TasksController添加任何before_filter逻辑.我运行测试但失败了. 现在我添加authenticate_user!助手提供的助手. tasks_controller.rb class TasksController < ApplicationController before_filter :authenticate_user!,only: [:new,:edit,:create,:destroy] ... end 测试运行但仍然失败,说如下: 1) TasksController redirects to sign in for new task if no user logged in Failure/Error: response.should redirect_to(new_user_session_path) Expected response to be a <:redirect>,but was <200> 现在在调用visit时,由于在会话中没有建立用户,我希望将响应重定向到/ user / sign_in.但是,我只是回来了200OK. 我在这里错过了什么?如何通过此测试? 解决方法
试试这个:
describe "redirects to sign in for new task if no user logged in" do before { post tasks_path } specify { response.should redirect_to(new_user_session_path) } end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |