2016-07-16 3 views
0

Я упростил мою RSpec проблему сравнения сводится к следующему:Пустые ActiveRecord :: Отношения не сравнить в RSpec

expect(DetailObjective.all.limit(0)).to eq(DetailObjective.none)

который возвращает отказавшего результат:

expected: #<ActiveRecord::Relation []>

got: #<ActiveRecord::Relation []>

(compared using ==) 

, который кажется, что они подходят? Как сравнить эти пустые отношения? Я не хочу сравнивать что-то поддельное, как be_empty, поскольку это ничего не говорит о сравнительных структурах, просто содержании.

ответ

0

DetailObjective.all.limit(0) и DetailObjective.none возвращают новый экземпляр ActiveRecord::Relation, но eq возвращает false, когда объекты не являются идентичными - то есть, они не являются тем же объектом. Вы можете легко это увидеть, назначив вывод каждого метода локальной переменной и проверив ее object_id - они будут разными.

Я не хочу, чтобы сравнить что-то фальшивое, как be_empty ...

Не уверен, что вы имеете в виду под «фальшивкой». Коллекции являются сложными типами - их сравнение не похоже на сравнение целых чисел. Они одинаковы, когда у них одни и те же члены? Когда члены находятся в одном порядке? Когда члены одного класса?

Сравнение одной пустой коллекции с другой пустой коллекцией, похоже, не имеет особого смысла ... можете ли вы четко указать, что вы пытаетесь выполнить здесь?