gpt4 book ai didi

ruby-on-rails - Controller 规范未登录我的工厂创建的用户

转载 作者:行者123 更新时间:2023-12-05 00:35:43 25 4
gpt4 key购买 nike

我的类(class) Controller 的 Controller 测试有问题。似乎设计没有正确登录我的用户。仅为此 Controller 生成的所有 Controller 测试都失败了。

我使用 Factory-girl 在 users.rb 中创建我的用户,如下所示......

FactoryGirl.define do
factory :user do
sequence :email do |n|
"test#{n}@email.com"
end
password "password"
password_confirmation "password"
end
end

然后在我的courses_controller_spec.rb 中,我模拟了如下登录。
require 'spec_helper'
describe CoursesController do
include Devise::TestHelpers

before(:each) do
#@request.env["devise.mapping"] = Devise.mappings[:user]
user = Factory.create(:user)
user.toggle!(:admin)
sign_in user
end

describe "DELETE destroy" do
it "redirects to the courses list" do
course = Factory.create(:course)
delete :destroy, {:id => course.to_param}, valid_session
response.should redirect_to(courses_url)
end
end

我得到输出...
Failure/Error: response.should redirect_to(courses_url)
Expected response to be a redirect to <http://test.host/courses> but was a redirect to <http://test.host/users/sign_in>

请注意,我还在我的 spec_helper.rb 中使用了以下内容
config.include Devise::TestHelpers, :type => :controller

我已经按照 https://github.com/plataformatec/devise/wiki/How-To:-Controllers-and-Views-tests-with-Rails-3-%28and-rspec%29 试过了

在我的请求规范中,我可以使用下面的方法创建用户并登录,这可以正常工作,但我想让所有 Controller 测试也能正常工作
fill_in "Email", :with => user.email
fill_in "Password", :with => user.password
click_button "Sign in"

任何帮助在这里将不胜感激。

最佳答案

我只是自己想通了这一点。从删除调用中删除 valid_session。这似乎覆盖了使用设计测试助手定义的 session 。

其他一切似乎都是正确的。保留所有设计设置代码,只需将规范中的删除行更改为:

delete :destroy, {:id => course.to_param}

我还在 before( :each ) 中保留了以下行块,您已注释掉。不确定它的作用:
@request.env["devise.mapping"] = Devise.mappings[:user]

关于ruby-on-rails - Controller 规范未登录我的工厂创建的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137814/

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