gpt4 book ai didi

ruby-on-rails - 使用 Devise 和 RSpec 测试身份验证重定向

转载 作者:行者123 更新时间:2023-12-03 03:11:37 26 4
gpt4 key购买 nike

我正在开发一个示例 Rails 应用程序,以便我可以开始熟悉 BDD。

现在我正在使用 Devise 来处理我的用户身份验证。

我有一个任务模型,需要用户登录才能访问新建、创建、编辑和销毁操作。

我有以下代码:

requests/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 逻辑。我运行测试但失败了。

现在我添加 Devise 提供的 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>

现在,当调用访问时,由于 session 中没有建立用户,我希望响应被重定向到/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

关于ruby-on-rails - 使用 Devise 和 RSpec 测试身份验证重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com