1

Ruby 1.8.6 を使用している場合、テスト対象のコードが結果に対して「count」メソッドを呼び出す場合、ファインダー メソッドをスタブ化して配列を返すことはできません。

User.any_instance.stubs(:friends).returns([user1, user2])

これは、Array.count が Ruby 1.8.7 でのみ追加されたためです。Rails は count メソッドも動的に追加します。私は ActiveRecord::Calculations モジュールを使用していると思います。

この結果の配列を、Rails finder メソッドによって返される特別な配列の種類とまったく同じように動作するものに変換する方法はありますか? 結果をページ分割するときは簡単です。[].paginate を呼び出すだけです。しかし、それは通常の検索結果では機能しません。私は試し[].extend(ActiveRecord::Calculations)ましたが、それもうまくいきません。

4

1 に答える 1

-1

カウントもモックできます:

arr = [user1, user2]
arr.stubs(:count).returns(arr.size)
User.any_instance.stubs(:friends).returns(arr)
于 2010-03-25T14:53:38.513 に答える