2013-06-07 21 views
10

ile s3'e yapılan dosya yüklemelerini test ediyor. Amazon s3'e, this Railscast'da olduğu gibi, carrierwave dosya yüklemelerini uyguladık.Carrierwave dosyası, Capybara ve Rspec

Bunu test ederken sorun yaşıyorum. Capybara ile bir dosya ekleyebilirim, ancak yüklemek için düğmeyi tıkladığımda doğru harekete yönlendirilmez. Save_and_open_page ile kontrol ettim ve bunun yerine ana sayfayı görüntülüyor.

Tarayıcıda test ettiğimde iyi çalışıyor, ancak s3 yüklemesi hakkındaki bilgiler URL'ye ekleniyor (screenshot). Bunun neden testte işe yaramayacağından emin değil. https://gist.github.com/leemcalilly/1e159f1b93005b8113f2

ilklendiriciler/carrierwave.rb - - https://gist.github.com/leemcalilly/924e8755f7c76ecbf5cf

modeller/work.rb - https://gist.github.com/leemcalilly/cfda1a7f15d87dbab731

kontrolörleri/works_controller.rb

example_spec.rb: Burada

ilgili bazı dosyalar - https://gist.github.com/leemcalilly/7fca5f2c81c6cb4de6bc

Bu türü nasıl test edebilirim capybara ve rspec ile formun?

cevap

15

Tamam, bunu anladım.

include CarrierWaveDirect::Test::CapybaraHelpers

Sonra testler bu gerekli matchers CarrierWaveDirect:

attach_file_for_direct_upload("#{Rails.root}/spec/support/images/example.jpg") upload_directly(ImageUploader.new, "Upload Image") benim spec_helper.rb için bu satırı eklemek için gerekli

https://github.com/dwilkie/carrierwave_direct#using-capybara

: Anahtar CarrierWaveDirect olduğunu

Ben de başlatıcıları bu eklemek için gerekli
it "creates a new work with a test image" do 
    client = FactoryGirl.create(:client) 
    work = FactoryGirl.build(:work) 
    visit works_path 
    attach_file_for_direct_upload("#{Rails.root}/spec/support/images/example.jpg") 
    upload_directly(ImageUploader.new, "Upload Image") 
    fill_in "Name", :with => work.name 
    select("2012", :from => "work_date_1i") 
    select("December", :from => "work_date_2i") 
    select("25", :from => "work_date_3i") 
    select(client.name, :from => "work_client_ids") 
    fill_in "Description", :with => work.description 
    fill_in "Service", :with => work.service 
    save_and_open_page 
    check "Featured" 
    click_button "Create Work" 
    page.should have_content("Work was successfully created.") 
end 

/carrierwave.rb:

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

yerine sis veya yüklemelerde test etmek yanıtı alayYani nihai geçer test şöyle s3'e kadar, test ortamında s3'e yüklemeleri kapattım.

+0

Sadece benim gibi yapışmış ve bu gibi her şey vardı herkes için bir not. Çalışması için j testini test etmem gerekti. – rmaspero

İlgili konular