Логика модели модульного тестирования, основанная на атрибутах «текущего пользователя» - PullRequest
1 голос
/ 16 августа 2011

В одном распространенном случае приложение имеет пользователей и группы, только пользователь, являющийся администратором группы, может добавлять / удалять пользователей. У меня могло бы быть действие контроллера, которое идет "@ group.add_member, если current_user.is_admin"

Кажется, что тестирование этого поведения должно быть частью модульных тестов модели, потому что это один кусок кода, отвечающий за одну задачу. Но я не уверен, как лучше учитывать тот факт, что правильность этого метода зависит от контроллера. Я думал:

  1. Один из вариантов - переопределить метод модели, чтобы получить дополнительный параметр для current_user, но это кажется немного уродливым.
  2. Другой вариант - протестировать просто «add_user» в модели и проверить поведение «is_admin» в тест контроллера вместо этого, хотя я думал, что это проблема модели.
  3. Еще один вариант - включить этот метод в модель User. вместо группы, поэтому вызываться как: "current_user.add_member_to_group" <- звучит как ответственность за эту функциональность должна быть в модели группы хотя. </li>

Мысли

1 Ответ

0 голосов
/ 16 августа 2011

Вариант 2 в порядке.

Логика безопасна:

  • модель отвечает за свой бизнес

  • контроллер-проводник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...