あなたは何を正確に質問していますか?どのように関係のための基本的なテストを設定するか、current_userの管理をテストする方法?
これについての基本的なテストは、そのようなことを整理することがモデルの仕事であるため、モデル仕様にあるべきです。
Iは、通常、このようにテスト:
1)備品を定義する(または交互FactoryGirlようなものを使用)は、2人のユーザーおよび一部の資産(この例では3つ)のために。ユーザaのための資産は、ユーザBのasset_b_用*、それら*)
2 asset_a_命名されている)のテストは、単純にこのようなものです:
users(:users_a).assets.should have(3).records
users(:users_a).assets.should include(assets(:asset_a_a))
users(:users_a).assets.should include(assets(:assets_a_b))
users(:users_a).assets.should include(assets(:assets_a_c))
あなたは ユーザー(のように、これを微調整することができますusers_a).assets。 (資産(:asset_a_a)) ユーザー(:users_a).assets.find(assets(:asset_a_a).id).should_notは含まれません。
もしあなたが絶対に望むのであれば、コントローラの部品に同様のテストを使うことができます。
あなたのモデルで定義した関連付けを処理するのは、主にRailsのコア機能だからです。
個人的に私は何らかの理由でこの種のテストを行っています。多くの場合、そのような許可関連団体は、やがてもっと複雑になり、とにかく詳細なテストが必要になります。誰かが協会のパラメタを変更して何かを壊すかもしれません。
II - コントローラ内のcurrent_user部分について。
これはもちろん、まず認証をどのように処理するかによって異なります。 AuthLogic(または何でも)のようなプラグインを使用すると、rspecでログインをシミュレートできるいくつかのメソッドがあるかもしれません。 authlogicのためには、このような何かを行うことができます。
before(:each) do
activate_authlogic
UserSession.create(users(:user_a))
end
これはauthlogicと「ログイン」USER_Aがアクティブになります。 次にコントローラを実行します
get :index
response.should be_success
response.should render_template :index
assigns(:assets).should # => more or less as above, check that there are the right aessets.
私もfactoryGirl/Deviseを使用していますが、まだ工場を定義していません。その工場はどのように見えますか?そして私はTemplatesControllerにコントローラの名前を変更しました – RubyNerd
私は動作するインデックス関数を持っています。ショーの機能とほとんど同じことでしょうか? – RubyNerd
ちょうどメモ...テストは合格(:資産)...私は割り当て(:資産).shouldイク(@assets)それが失敗した場合にのみ渡します。 – RubyNerd