2012-04-21 18 views
0

:以下の範囲をテストするRspecと_returnはIDでソートしますか?以下のRSpecのテストでは

@search_text = "California" 
@search_condition = "location" 
Video.stub_chain(:where,:order).and_return([@vid1,@vid2,@vid3]) 
Video.should_receive(:where).with("lower(#{@search_condition}) LIKE ?", "%#{@search_text}%".downcase) 

return_val = Video.search(@search_text, @search_condition) 
return_val.should == [@vid1,@vid2,@vid3] 

scope :search, (lambda do |search_text, search_condition| 
       where("lower(#{search_condition}) LIKE ?", "%#{search_text}%".downcase).order("name") 
       end) 

私はROM stub_chainを返された値がありませんRETURN_VALUEのために取得した値。特に、返される配列内の項目は同じですが、その順序は名前ではなくIDでソートされているようです。誰がなぜこれが起こるのか知っていますか?

ありがとうございます!

+0

。スコープを指定するには、dbにエントリを作成し、必要なものを取得するかどうかを確認します。 – apneadiving

+0

さて、このテストは重複していて、もう使用していないことがわかりましたが、この動作が奇妙なので、誰かがなぜそれが起こったのか説明しているのだろうかと思っていました。 – user1082160

答えて

0

これを試してみてください。これは、これまでの仕様であることから、あなただけの意味をなさない実装をテストしているされて

unordered_videos = double "Video" 
Video.should_receive(:where).with("lower(#{@search_condition}) LIKE ?", "%#{@search_text}%".downcase).and_return unordered_videos 
unordered_videos.should_receive(:order).and_return [@vid1,@vid2,@vid3] 
+0

私は、あなたの現在の 'stub'と' should'を上記のthzで置き換えることを意味します – apneadiving

関連する問題