gpt4 book ai didi

RSpec 和设计 : cannot sign_in admin

转载 作者:行者123 更新时间:2023-12-03 13:29:00 27 4
gpt4 key购买 nike

我正在将我的标准 Rails 单元测试迁移到 RSpec,但我的设计有问题。所有包含设备身份验证的 Controller 都因 RSpec 失败。

我尝试按照设计教程在 RSpec 中登录管理员,但没有成功:

https://github.com/plataformatec/devise/wiki/How-To:-Controllers-and-Views-tests-with-Rails-3-(and-rspec)

这是我尝试过的:

/spec/controllers/ipad_tech_infos_controller_spec.rb

before :each do
@request.env["devise.mapping"] = Devise.mappings[:admin]
@admin = FactoryGirl.create :admin
sign_in @admin
end

/spec/support/devise.rb
RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
end

/spec/factories/admin.rb
FactoryGirl.define do
factory :admin do
email "abc@abc.com"
password "foobar"
password_confirmation {|u| u.password}
end
end

我的模型无法确认,我所有的 Controller 规范都失败了。

如果我删除 before_filter :authenticate_admin!然后我所有的测试都通过了。

有人可以帮忙吗?

最佳答案

可能的罪魁祸首:确保您没有在 Controller 规范中明确设置 session 。

例如,如果您使用默认的 Rspec 脚手架生成器,则生成的 Controller 规范会传递 session 参数。

get :index, {}, valid_session

这些正在覆盖 Devise 的助手设置为使用 Warden 登录的 session 变量。最简单的解决方案是删除它们:
get :index, {}

或者,您可以手动在其中设置 Warden session 信息,而不是使用 Devise 的助手。

关于RSpec 和设计 : cannot sign_in admin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9581062/

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