현재 jquery 업로드 플러그인을 사용하여 사용자가 파일을 업로드하여 사용자 아바타를 설정하는 등의 작업을 할 수있는 레일 앱을 만들고 있습니다. 업로드가 성공하면 양식에 업로드 ID로 숨겨진 필드를 설정하고 양식을 제출하면 연결이 저장됩니다. 필자가 수동으로 테스트 할 때 예상대로 작동합니다. 그러나 나는 RSpec 테스트를 통과 할 수 없다.Capybara에서 JQuery 업로드 테스트 : 파일이 연결되지 않음
저는 RSpec을 테스트 프레임 워크로, Capybara-webkit을 자바 스크립트 드라이브로 사용하고 있습니다. 파일이 첨부하도록되어 필드는
파일 업로드이
$element.fileupload
dropZone: $dropzoneElement
url: "/uploads.json"
method: "PATCH"
fail: (e, data) =>
@showErrorOnFailure(e, data)
done: (e, data) =>
@onSuccessfulUpload(e, data)
컨트롤러 코드처럼 보이는 처리하는 커피 스크립트 (템플릿 슬림 사용하여, 또한)이
= file_field_tag :file, class: "upload_file_field"
처럼 보이는 파일 업로드는 다음과 같습니다.
class UploadsController < ApplicationController
def create
@upload = Upload.new(file: params[:file])
byebug
if @upload.save
respond_to do |format|
format.json { render json: {upload: @upload, url: @upload.file.url(:avatar) } }
end
else
respond_to do |format|
format.json { render json: {}, status: :unprocessable_entity }
end
end
end
end
그리고 여기에 내가 사용하고있는 RSpec 코드가 있습니다. 동부 표준시 내가 테스트를 실행하면
filepath = "#{Rails.root}/spec/support/fixtures/uploads/flickr.jpg"
attach_file :file, filepath
click_on "Submit"
expect(page).to have_css(".avatar-img img")
는 전체 요청을 통해가는 파일을 첨부 (카피 바라가 문제가 파일 또는 양식 필드를 발견했다 아닙니다). 그러나 테스트가 실패합니다. 그리고 내가 byebug를 사용하여 새로운 업로드를 저장하라는 요청을받는 지점에서 업로드 컨트롤러를 검사 할 때 매개 변수가 전송되지 않습니다. params[:file]
에서와 같이 nil
으로 평가되고 flickr.jpg
에 대한 파일 정보가 있어야합니다. 카피 바라가 그것에 대해 어떤 오류도 제기하지 않았지만 내 파일이 테스트에 첨부되지 않는 이유는 무엇입니까.