2013-06-07 13 views
10

this Railscastのように、Amazon S3にcarrierwaveファイルのアップロードを実装しました。CapybaraとRspecを使用してCarrierwaveファイルをs3にアップロードする

これはテストに問題があります。私はCapybaraとファイルを添付することができますが、アップロードするボタンをクリックすると、正しい動作にリダイレクトされません。私はsave_and_open_pageでチェックし、代わりにホームページを表示しています。

ブラウザでテストすると問題なく動作しますが、s3のアップロードに関する情報はURL(screenshot)に追加されます。なぜこれがテストでうまくいかないのか分かりません。ここで

は、いくつかの関連ファイルは、次のとおりです。

example_spec.rb - https://gist.github.com/leemcalilly/1e159f1b93005b8113f2

初期化子/ carrierwave.rb - https://gist.github.com/leemcalilly/924e8755f7c76ecbf5cf

モデル/ work.rb - https://gist.github.com/leemcalilly/cfda1a7f15d87dbab731

コントローラ/ works_controller.rb - https://gist.github.com/leemcalilly/7fca5f2c81c6cb4de6bc

このタイプをテストするにはカピバラとrspecとフォームの?

答えて

15

私はこれを理解しました。

include CarrierWaveDirect::Test::CapybaraHelpers

はその後、私のテストは、これらの必要なマッチャーCarrierWaveDirect:

attach_file_for_direct_upload("#{Rails.root}/spec/support/images/example.jpg") upload_directly(ImageUploader.new, "Upload Image")を私はspec_helper.rbに次の行を追加する必要が

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

:キーがCarrierWaveDirectです

だから、最終合格テストは、次のようになります。

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 

よりもむしろ霧への応答を模擬、またはアップロードをテストs3へ、私はテスト環境でs3へのアップロードをオフにしました。

+0

私のように立ち往生し、この答えのようなものをすべて持っていた誰のためのちょうどメモ。私はそれが動作するようにテストでjsを有効にする必要がありました。 – rmaspero

関連する問題