Rails 3.2.14、Capybara 2.1.0、jquery-fileupload-rails 0.4.1 を使用しています。
ファイルのアップロードに関するテストを作成しようとすると、ファイルの入力がカピバラによって検出されません。仕様フラグメント:
describe "Create with all required fields filled" do
before do
choose "Revision File"
select "Publish", from: "file_asset[file_type_ref_id]"
click_button "Next"
script = "$('input[type=file]').show();" # added later
page.driver.browser.execute_script(script)
print page.html # to debug the page
subject { page }
end
describe "Save should create a FileAsset" do
it { should have_selector("span.fileinput-button span") }
it { should have_selector("span.fileinput-button input") }
end
rspec の結果:
Failures:
1) FileAsset Pages New-Create (revision file) Without Authorizations Create with all required fields filled Save should create a FileAsset
Failure/Error: it { should have_selector("span.fileinput-button input") }
expected #has_selector?("span.fileinput-button input") to return true, got false
# ./spec/requests/file_asset_pages_spec.rb:63:in `block (6 levels) in <top (required)>'
Finished in 16.95 seconds
2 examples, 1 failure
つまり、最初の例は正常に実行されますが、2 番目の例は実行されませんが、html ページには両方が含まれています (の出力フラグメントprint page.html
):
<div class="row fileupload-buttonbar">
<div class="span7">
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-small btn-success fileinput-button">
<i class="icon-plus icon-white"></i>
<span>Select and Upload File</span>
<input type="file" name="upload[upload]" id="upload_upload" />
</span>
</div>
</div>
入力は非表示ではなく、スパンは同じ div にあります。もちろん、セレクターとして「#upload_upload」を試しましたが、結果は同じです。仕様ではshow()
、後で入力に 2 行を追加しましたが、それらがなくても結果は同じです。
どんな助けでも大歓迎です。