Ошибка при тестировании ресурсов: невозможно дублировать NilClass - PullRequest
1 голос
/ 01 августа 2011

Я использую рельсы 3.0.9 с ruby ​​1.9.2. Я делаю систему, которая позволяет пользователям помещать предметы в разные шкафы. Одной из возможностей пользователя является копирование предмета другого пользователя в его собственный шкаф (пожалуйста, скажите мне, если вы не понимаете, я не очень хорошо объясняю вещи ..).

Для обработки изображений я использую скрепку 2.3.16. Я тестирую свое приложение с Rspec-rails 2.6.1, Cucumber-rails 1.0.2. Когда я запускаю свои тесты с guard & spork на копируемой части ресурса, у меня появляется «Ошибка типа: невозможно дублировать NilClass». Я искал в сети ответ, но не нашел ничего конкретного и работающего :(.

У вас есть идея по этому вопросу?

Мой код для closet_spec.rb (если вам нужно что-то еще, просто скажите мне):

  describe '#tidy_up' do
let!(:other_user) { Factory.create(:confirmed_user, :user_name => 'Plop', :email => 'coin@plop.fr') }
let!(:closet) { other_user.closets.first }
let!(:item) { Item.create! :type_id => 42, :closet_id => dream_dressing.id }
let!(:dressing_item) { Item.create! :type_id => 42, :closet_id => dressing.id }

before do
  path = File.join(Rails.root, "spec", "support", 'image.jpg')
  f = File.open(path)
  2.times.map do |n| 
    i = Item.new :type_id => 2#, :asset => Asset.new(picture)
    i.save!
    puts ">>>>>>>>>>>>>>>>>>>>> #{i.id}"
    i.build_asset(:picture => f)
    closet.items << i
  end
  @count = 0
end

it 'copies given items and assets to closet' do
  expect { dream_dressing.tidy_up closet.items }.to change { dream_dressing.items.count }.by 2
  expect { dream_dressing.tidy_up closet.items }.to change { dream_dressing.items.map{|i| i.asset; puts ">>>>>>>>>>>>>>>>> asset : #{i.asset} " }.length }.by 2
end
...