Тестирование rspec carrierwave - новичок

Я делаю приложение rails 3.1 с использованием carrierwave для загрузки файлов на aws s3. Я выполнил инструкции в репозитории github carrierwave и теперь могу загружать файлы в свою корзину aws. Это тестирование заставило меня застрять. Последние два дня я гуглил и пересматривал, используя все другие вопросы и ответы, которые нашел, но наконец-то плачу «мама». Вот что у меня есть:

/app/uploaders/image_file_uploader.rb

storage :fog

def store_dir
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

/config/initializers/carrierwave.rb

if Rails.env.test? or Rails.env.cucumber?
  CarrierWave.configure do |config|
    config.storage = :file
    config.enable_processing = false
  end
end

/spec/uploaders/image_file_uploader_spec.rb

require 'spec_helper'
require 'support/fog_helper'
require 'carrierwave/test/matchers'

describe ImageFileUploader do
  include CarrierWave::Test::Matchers

  before do
    ImageFileUploader.enable_processing = true
    @user = Factory(:user, :email => "photo_taker@example.edu")
    @uploader = ImageFileUploader.new(@user, Factory(:image))
    @uploader.store!(File.open("#{Rails.root}/tmp/uploads/#{Rails.env}/images/"))
  end

  after do
    @uploader.remove!
    ImageFileUploader.enable_processing = false
  end

  context 'the tiny version' do
    it "should scale down a landscape image to be exactly 50 by 50 pixels" do
      @uploader.tiny.should have_dimensions(50, 50)
    end
  end

spec / factoryies.rb

Factory.define :image do |image|
  include ActionDispatch::TestProcess

  image.date_taken            "Sun, 09 Oct 2011"
  image.time_taken            "2000-01-01 03:41:00 UTC"
  image.image_file            fixture_file_upload('spec/support/test_images/audi.png', 'image/png')
  image.taken_by              "John Doe"
  image.collection            "N/A"
  image.comments              "Beautiful day!"
  image.association   :user

end

Пока мой / public / uploads / tmp / заполняется «крошечными» (и другими версиями) изображений, поколение которых я тестирую, тесты продолжают терпеть неудачу со следующим сообщением об ошибке:

1) ImageFileUploader tiny version должна уменьшать горизонтальное изображение, чтобы оно составляло ровно 50 на 50 пикселей

 Failure/Error: @uploader = ImageFileUploader.new(@user, Factory(:image))
 Excon::Errors::NotFound:
   Expected(200) <=> Actual(404 Not Found)
     request => {:expects=>200}
     response => #<Excon::Response:0x0000010569f928 @body="", @headers={}, @status=404>
 # ./spec/uploaders/image_file_uploader_spec.rb:11:in `block (2 levels) in <top (required)>'

. Я знаю, что вышесказанное означает, что rspec не находит мою тестовую корзину. У кого-нибудь есть мысли о том, что я делаю неправильно?

были бы очень благодарны за любые новые зацепки.

ОБНОВЛЕНИЕ: 10/11/11 Загрузка файла работает, но я зашел в тупик, пытаясь понять, как пройти тест с изображениями. В краткосрочной перспективе я буду использовать изображение-заполнитель, когда дополню остальную часть своего приложения и вернусь к этому позже. Я опубликую дальнейшее обновление, как только выясню это. (Однако оставьте какие-либо мысли, если у вас есть какие-либо идеи.)

19
задан engineersmnky 24 November 2014 в 21:37
поделиться