私はRSpecが好きで、配列には配列に関係なく配列の特定の要素が含まれていることを確認するために配列演算子matcherが本当に好きです。rspecでActiveRecordsのコレクションをテストする方法は?
しかし、驚くことではないが、それはポインタの平等ではなく、コンテンツの平等をテストするため、次のように動作しません。
class Flea < ActiveRecord::Base ; end
class Dog < ActiveRecord::Base
has_many :fleas
end
@d = Dog.create
@d.fleas << (@f1 = Flea.create)
@d.fleas << (@f2 = Flea.create)
@d.fleas.should =~ [@f1, @f2]
だから私は自分自身が頻繁に私のRSpecのテストでこれを書いて見つける:
@d.fleas.map {|f| f.id}.should =~ [@f1.id, @f2.id]
...どちらの臭いがbad code smellです。 RSpecは、返される順序にかかわらず、ActiveRecordオブジェクトのコレクションを検証するためのより良い方法を提供していますか?あるいは、少なくともそのようなテストをコード化するためのよりきれいな方法がありますか?
ていますが、 '@のd.flea_ids'ではなく、マッピングを行うことができます。 –
真実ですが、あなたのアプローチでは、ほんのりとしたものです。:) –