Robię aplikację rails 3.1, używając carrierwave do przesyłania plików do aws s3. Postępowałem zgodnie z instrukcjami na repozytorium github firmy carrierwave, a teraz mogę przesyłać pliki do mojego zasobu aws. To testy mnie utknęły. W ciągu ostatnich dwóch dni szukałem go i poprawiałem, używając wszystkich innych, które znalazłem, ale w końcu płaczę "mama". Oto co mam:rspec testowanie carrierwave - nowicjusz
/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 => "[email protected]")
@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/factories.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
Chociaż mój/public/uploads/tmp/jest uzyskiwanie wypełniona „małe” (i inne wersje) obrazów, których pokolenie Jestem testowania, testy nadal nie z następującym komunikatem o błędzie:
1) ImageFileUploader maleńka wersja powinna przeskalować w dół obrazu pejzaż być dokładnie 50 o 50 pikseli
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)>'
wiem, że powyższe oznacza, że rspec nie jest znalezienie moich testów wiadro. Ktoś myśli o tym, co robię źle?
byłby bardzo wdzięczny za wszelkie nowe kontakty.
UPDATE: 10/11/11 Przesyłanie plików działa, ale utknąłem w zastanawianiu się, jak uzyskać test obejmujący obrazy do przekazania. W krótkim czasie użyję obrazu zastępczego, gdy uzupełniam resztę mojej aplikacji i wrócę do tego później. Opublikuję dalszą aktualizację, gdy się zorientuję. (Jeśli jednak masz jakiekolwiek spostrzeżenia, zostaw wszelkie przemyślenia.)
Czy Twój plik @ uploader.store powinien przechowywać katalog? Myślę, że to powinien być konkretny plik. – Andrew
@BenU czy moja odpowiedź rozwiązała twój problem? Zaakceptuj to, jeśli tak :-) –