Тестирование загрузки файла Paperclip с помощью RSpec

Меня не волнует тестирование загрузки файлов, но поскольку в моей модели есть validates_attachment_presence и т. д., rspec жалуется.

Итак, теперь я создаю свою модель с этими атрибутами в спецификации, чтобы попытаться заткнуть ее:

@attr = {
  :name => "value for name",
  :title => "value for title",
  :content => "value for content",
  :pic_file_name => "example.jpg",
  :pic_content_type => "image/jpg",
  :pic_file_size => "8192",
  :pic_updated_at => nil
}

Однако это не работает.

Я нашел это: http://fr.ivolo.us/posts/mocking-paperclip-with-rspec Итак, я попробовал что-то вроде этого:

Post.should_receive(:save_attached_files).and_return(true)

Что тоже не работает. Как успокоить RSpec?


person nnyby    schedule 28.07.2010    source источник
comment
возможный дубликат модульного тестирования загрузки скрепки с помощью Rspec (Rails)   -  person Tobias Cohen    schedule 19.09.2011


Ответы (1)


Если модель has_attached_file :pic, вы должны иметь возможность просто указать атрибут pic на какой-то файл, и все должно быть денди.

Что-то вроде @attr = { :pic => File.open(File.join(Rails.root, 'spec', 'fixtures', 'file.png')) }

person theIV    schedule 01.08.2010
comment
Раньше это работало для меня, но, похоже, не работает при обновлении до скрепки 3.1.4 с 2.5.0. - person David N. Welton; 24.08.2012
comment
@DavidN.Welton, какую ошибку (если есть) вы получаете? У меня нет большого опыта работы с Paperclip 3. - person theIV; 24.08.2012
comment
Что исправлено: mymodel.attachedimage = File.open(....) вместо attachedimage = "file/location/foo.jpg" - person David N. Welton; 25.08.2012
comment
@DavidN.Welton Вы когда-нибудь понимали это? У меня такая же проблема. - person Jason Swett; 17.02.2015
comment
@JasonSwett см. комментарий выше - вы должны передать ему дескриптор файла, а не имя файла. - person David N. Welton; 17.02.2015
comment
Поскольку у некоторых людей были проблемы, я хотел бы обновить ответ, но прошло некоторое время с тех пор, как я использовал скрепку. Может ли кто-нибудь предложить редактирование, возможно, @DavidN.Welton? Спасибо! - person theIV; 17.02.2015