2013-07-18 13 views
5

Piszę niektóre specyfikacje rspec, w których pole widgetpic obiektu musi wskazywać na rzeczywisty obraz, ale bez przy użyciu uploadra carrierwave.rspec i carrierwave - jak ustawić adres URL obrazu bezpośrednio (BYPASS carrierwave uploader podczas testowania)

Podczas testu chcę ominąć przesyłkę i ręcznie ustawić URL obrazu testowego. Konkretnie mam kilka zdjęć testowych online i po prostu chcą mieć foo.widgetpic.url wrócić trochę stałą lokalizację: „http://mybucket.s3.amazonaws.com/test_pix/test1.png

Model Widget posiada:

mount_uploader :widgetpic, WidgetPicUploader 

Więc w moim zakładzie FactoryGirl zakładam muszę zrobić coś takiego

trait :test_pic do 
    SOMETHING "http://mybucket.s3.amazonaws.com/test_pix/test1.png" 
end 

próbowałem ustawienie widgetpic_url i remote_widgetpic_url ale to nie działa (widgetpic.url nadal zwraca moją default „brak obrazu” obrazu zdefiniowanego w moim uploader).

Odpowiedz

2

Wygląda na to, że coś innego jest uszkodzone w stosunku do programu do przesyłania, a nie do fabryki. Czy możesz wysłać swoją konfigurację carrierwave?

Poza tym, poprawna składnia dla zdalnych fabryka obrazów jest remote_ < zasób> _url:

trait :test_pic do 
    remote_widgetpic_url "http://mybucket.s3.amazonaws.com/test_pix/test1.png" 
end 

Należy jednak pamiętać, że robiąc to, CarrierWave nie jest pomijany. CarrierWave wykona dla ciebie zdalny obraz i użyje pobranego obrazu do ponownego przesłania do lokalizacji określonej w Twoim uploaderze. Możesz użyć tej techniki w połączeniu z czymś takim, jak WebMock lub VCR, aby emulować i/lub nagrywać żądanie HTTP i odtwarzać je.

Prostszym podejściem może być wykorzystanie funkcji szyderczych wbudowanych w Fog, aby symulować przesyłanie do testu. W ten sposób, można po prostu umieścić manekina obrazu w fabryce:

factory :widget do 
    # ... 

    widgetpic Rack::Test::UploadedFile.new(File.open(
    File.join(
     File.dirname(__FILE__), '../fixtures/images/your_image_here.png'))) 
end 

że zdjęcie zostanie użyte do symulacji upload, ale nie będą wysłane do miejsca na S3 i można przetestować przesyłanie wycofanych z do końca.

+0

fajna sztuczka o kpiącej mgle, dzięki – jpwynn

Powiązane problemy