3

カピバラ/キュウリを使用して autoUpload オプションを有効にして jquery-file-upload プラグインをテストしようとしています。テスト環境でのアップロードは autoUpload オプションが設定されていない場合に機能するため、この問題は autoUpload オプションに関連しているようです。attach_file カピバラ メソッドでアップロードしています。このメソッドは change イベント リスナーをトリガーしますが、他にはあまりないようです。添付ファイルの作成アクションにヒットすることはありません。送信イベント リスナーを手動でトリガーしようとすると、作成アクションの params[:attachment] が空になり、添付ファイルを作成できません。

現在設定されている方法は次のとおりです。

  • Project モデル、Attachments モデル、Issue モデルの 3 つのモデルがあります。
  • 問題のインデックス ページには 2 つのフォームがあります。1 つは新しい添付ファイルの送信を処理するフォームで、もう 1 つは新しい問題の送信を処理するフォームです。
  • 添付ファイルの作成アクションがトリガーされるたびに、jquery-file-upload は関連する課題に添付ファイルを追加するために必要なデータを JavaScript 経由で隠しフィールドに入力します。これは、jquery-file-upload からの fileuploadcompleted コールバックで行われます。

このアップロード方法は、ファイルを手動でアップロードしようとするたびに機能しますが、テスト環境では失敗します。非表示の送信ボタンを添付フォームに追加しようとしましたが、カピバラを介してそのボタンを押すと、作成アクションがトリガーされますが、パラメーターは再び空になります。どうしたらいいのか分からなくなってきたので、同じような悩みをお持ちの方がいらっしゃいましたら、お力添えいただければ幸いです。

それが役立つ場合は、関連するコードを次に示します。

jquery-file-upload の初期化と添付フォーム

使用する Gem:
Rails 3.2.12
Capybara 2.1.0
Capybara-webkit 1.0.0
Jquery-fileupload-rails 0.3.0 - 0.4.1 でもテスト、同じ結果

さらにコードやその他の情報が必要な場合はお知らせください。この投稿をすぐに編集できます。

ありがとう!

4

2 に答える 2

0

同様の問題がありましたが、次のことがわかりました。

  1. Capybara + Webdriver はプラットフォーム固有のパス区切り文字を想定しており (Windows では、 '\'Windows がサポートするものに関係なくのみ'/'、* nix では - のみ'/'など)、Capybara はそれに対して何もしません。
  2. Capybara + WebDriver はフル パスを必要とします
  3. 非表示のファイル入力にファイルを添付することはできません (たとえば、JQuery FileUpload プラグインを使用する場合)。

非表示の要素を見つけるセレクターを使用し、プラットフォーム固有のセパレーターを使用してファイルへのパスを設定します。

path = File.expand_path(rel_path).gsub('/', File::ALT_SEPARATOR || File::SEPARATOR)
find(:file_field, input_id, visible: false).set(path)

私の場合、gem の次のバージョンで動作します。

gem "jquery-fileupload-rails", "0.4.1"

gem 'capybara', '2.2.1'
gem 'selenium-webdriver', '2.41.0'
于 2014-04-05T13:08:18.170 に答える
0

誰かがこの古い質問に出くわし、Capybara とPoltergeistで jquery-fileupload をテストするのに苦労している場合(もう 1 つの回答はセレンに関するものです)、PhantomJS を 2.1.0 以上にアップグレードしてみてください。

私はそれを機能させるのに大きな頭痛の種でした。問題の原因はPhantomJS 2.0の既知の問題であることが判明しました。2.1.1 にアップグレードすると修正されました。

brew update(自作を使用している場合は、 thenを実行して PhantomJS を更新できますbrew upgrade phantomjs)

于 2016-05-01T17:10:36.170 に答える