我正在将我的标准Rails单元测试迁移到RSpec,我遇到了设计问题.包含设计认证的所有控制器都失败了RSpec.
我尝试按照设计教程在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
Run Code Online (Sandbox Code Playgroud)
/spec/support/devise.rb
RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
end
Run Code Online (Sandbox Code Playgroud)
/spec/factories/admin.rb
FactoryGirl.define do
factory :admin do
email "abc@abc.com"
password "foobar"
password_confirmation {|u| u.password}
end
end
Run Code Online (Sandbox Code Playgroud)
我的模型无法确认,我的所有控制器规格都失败了.
如果我删除before_filter:authenticate_admin!然后我的所有测试都通过了
有人可以帮忙吗?
Ian*_*ell 21
可能的罪魁祸首:确保您没有在控制器规范中明确设置会话.
例如,如果您使用默认的Rspec脚手架生成器,则生成的控制器规范会传递会话参数.
get :index, {}, valid_session
Run Code Online (Sandbox Code Playgroud)
这些正在覆盖Devise的助手设置为使用Warden登录的会话变量.最简单的解决方案是删除它们:
get :index, {}
Run Code Online (Sandbox Code Playgroud)
或者,您可以手动设置Warden会话信息,而不是使用Devise的帮助程序.
| 归档时间: |
|
| 查看次数: |
6422 次 |
| 最近记录: |