依赖于“当前用户”属性的单元测试模型逻辑

时间:2011-08-15 21:24:36

标签: ruby-on-rails rspec

一个常见的情况是应用程序包含用户和组,只有作为该组管理员的用户才能添加/删除用户。我可能有一个控制器操作“@ group.add_member if current_user.is_admin”

似乎测试此行为应该是模型单元测试的一部分。因为它是负责单个任务的单个代码。但我不确定如何最好地包括这个方法的正确性取决于控制器的事实。我在想:

  1. 一种选择是重新定义模型方法以为current_user获取额外的参数,但是 这看起来有点难看。
  2. 另一个选择是在模型中测试“add_user”并检查“is_admin”行为 相反,虽然我认为这是一个模型问题。
  3. 另一个选择是让此方法成为User模型的一部分 而不是Group,因此被调用为:“current_user.add_member_to_group”< - 听起来像 该功能的责任应该在Group模型中 虽然。
  4. 思想?

1 个答案:

答案 0 :(得分:0)

选项2没问题。

逻辑是安全的:

  • 该模型负责其业务

  • 控制器是指挥