Мне нравится RSpec, и мне действительно нравится его =~
средство сравнения операторов массива, чтобы убедиться, что массив содержит определенный набор элементов, независимо от порядка.
Но неудивительно, что он проверяет равенство указателей, а неравенство содержимого, поэтому следующее не будет работать:
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]
... что пахнет неприятный запах кода .Предоставляет ли RSpec лучший способ проверки коллекции объектов ActiveRecord независимо от возвращаемого порядка?Или, по крайней мере, есть более красивый способ написания такого теста?