#ruby-on-rails #rspec #mocking #ruby-on-rails-5 #rspec-rails
#ruby-on-rails #rspec #издевательство #ruby-on-rails-5 #rspec-rails
Вопрос:
Как написать макет модели в rspec, который должен возвращать объекты модели вместо массива.
let(:item1) { mock_model(Item, item_number: '1') }
let(:item2) { mock_model(Item, item_number: '2') }
let(:items) { [item1, item2]}
inventory.items.order(:number)
Невозможно использовать items.order в методе, потому что элемент спецификации возвращается в виде массива. Как решить эту проблему
Комментарии:
1. Вы создаете
array
, вот почему вы получаете массив. Попробуйте, возможно,let(:items) { Item.all }
.2. Объявленные item1 и item2 должны назначаться только в элементах. Item.all извлечет все записи rit. Для целей тестирования достаточно только двух записей.
3. Единственными
Item
записями в вашей базе данных во время теста должны бытьItem
записи, которые вы создаете во время теста. Если ваш тест создает двеItem
записи (как вы показываете), тоItem.all
вернет только эти двеItem
записи.4. О, тогда позвольте мне попробовать
5. Есть какая-нибудь удача?