2010-03-25 21 views
1

En utilisant Ruby 1.8.6, stubbing une méthode de recherche pour retourner un tableau ne fonctionne pas lorsque le code en cours de test appelle la méthode « de comptage » sur le résultat:tableaux de résultats Stubbing ActiveRecord

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

C'est parce que Array. count n'a été ajouté que dans Ruby 1.8.7. Rails ajoute également dynamiquement une méthode de comptage, je crois grâce au module ActiveRecord :: Calculations.

Est-il possible de transformer ce tableau de résultats en quelque chose qui se comporte exactement comme le type de tableau spécial retourné par une méthode de recherche Rails? Lorsque l'on pagine des résultats, c'est facile: je peux simplement appeler [] .paginate. Mais cela ne fonctionne pas avec les résultats de recherche normaux. J'ai essayé [].extend(ActiveRecord::Calculations) mais cela ne fonctionne pas non plus.

Répondre

-1

Vous pouvez railler le compte aussi:

arr = [user1, user2] 
arr.stubs(:count).returns(arr.size) 
User.any_instance.stubs(:friends).returns(arr) 
+0

Bien sûr, mais je cherchais une solution générale à ce sujet. count n'est qu'une des nombreuses méthodes injectées dans Array par des rails. – Matthias