2011-08-15 10 views
1

通常、このアプリケーションにはユーザーとグループがありますが、グループの管理者であるユーザーのみユーザーの追加/削除ができます。 "@ group.add_member if current_user.is_admin""現在のユーザー"属性に依存するユニットテストモデルのロジック

この動作は、単体テストの原因となる単一のコードであるため、この動作はモデル単体テストの一部である必要があります。しかし、私はこのメソッドの正確さがコントローラに依存しているという事実をどのように入れるのが最善かどうかはわかりません。

  1. 一つの選択肢は、CURRENT_USERのための追加のparamを取るためのモデルメソッドを再定義することですが、少し醜いようだ :私は考えていました。
  2. もう1つの方法は、モデルの「add_user」をテストし、代わりに コントローラテストで「is_admin」の動作をチェックすることです。これはモデルの問題だと思っていました。
  3. さらに、このメソッドをGroupではなくUserモデル に含めることで、 "current_user.add_member_to_group" <というように呼び出すことができます。 のような機能がGroupモデルに含まれている必要があります です。

考えられますか?

答えて

0

オプション2は問題ありません。

ロジックは安全である:

  • モデルは、それは、コントローラは、導体

ある

  • ビジネスだ責任があります

  • 関連する問題