2011-09-01 20 views
12

私は少し破れています。 Scopes in Rails 3のユニットテストは意味がありますか?Rails 3スコープのテストは意味がありますか?

一方で、私はコードを書いているので、そのコードをテストする必要があります。

しかし、一方、基本的に私のすべてのスコープは事実上些細なものです。渡されたパラメータに対してある変数をチェックすることは、今まで私が今までに持っていた最も複雑な範囲です。

scope :author, proc { |author| where(:author_user_id => author }

このコードは自明とも多かれ少なかれ実際スコープを使用する関数で覆われています。

スコープをテストするかどうかのベストプラクティスは何ですか?

+0

なぜこのスコープを定義していますか?これは、協会のような何かの基準を使って、著者の側から何かのコレクションにアクセスするほうが適切ではないでしょうか? –

+0

ユーザーモデルでは、作成したすべての関連オブジェクトのリストを確実に取得できます。 'has_many:authored_articles ...'これは私のカーソルが上った単純なスコープのほんの最初のものでした。それは私が他の多くの結合スコープを持っている場合に使用されます – Drew

答えて

2

スコープがテストするのが簡単すぎると思うなら、それを無視することはできますが、スコープのテストを考えているならthis answerを見て、コード自体ではなく動作をテストするように指示します。

+1

スコープの実装をテストすべきではなく、動作するべきです。 [ここに答えです](http://stackoverflow.com/questions/3025103/how-to-test-a-scope-in​​-rails-3/3146311#3146311)私はリンクしたいと思います。 – Uzbekjon

15

デビッドChelimsky(RSpecの作成者は)Rspec Google Groupで、次の例をささげ:

describe User, ".admins" do 
    it "includes users with admin flag" do 
    admin = User.create! :admin => true 
    User.admin.should include(admin) 
    end 

    it "excludes users without admin flag" do 
    non_admin = User.create! :admin => false 
    User.admin.should_not include(non_admin) 
    end 
end 

class User < ActiveRecord::Base 
    named_scope :admins, :conditions => {:admin => true} 
end 

それは明らかにあなたと同じ例ではないのですが、それはあなたにそれを行う方法のアイデアを与える必要があります。関連するスレッドのコンテキストは次のとおりです。http://groups.google.com/group/rspec/browse_thread/thread/6706c3f2cceef97f

関連する問題