Макет модели в rails возвращает массив вместо объектов модели

#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. Есть какая-нибудь удача?