【发布时间】:2014-08-11 21:36:42
【问题描述】:
有一个应用程序,我使用 Rolify 和 Pundit 进行授权,使用 Minitest/fixtures 进行测试。
当我使用固定装置将用户设置为管理员时,我没有得到断言的真实值。
/fixtures/users.yml
administrator:
email: admin@example.com
roles: admin
/fixtures/roles.yml
admin:
id: 1
name: admin
test.rb
it "is administrator" do
User.first.has_role?('admin').must_equal true
end
测试返回错误,我用符号尝试了管理员,但仍然得到相同的结果。
当该开发环境中的用户具有管理员时,当我询问角色是否为管理员时,我得到了正确的答案。
测试框架是minitest,我的用户模型是rolified
【问题讨论】:
-
您是否检查了使用
has_role?方法时触发的查询? -
SELECT COUNT(*) FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = ? AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL))) [["user_id", 1]]
标签: ruby-on-rails minitest rolify