1

현재 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에 대한 파일 정보가 있어야합니다. 카피 바라가 그것에 대해 어떤 오류도 제기하지 않았지만 내 파일이 테스트에 첨부되지 않는 이유는 무엇입니까.

답변

0

그래서이 게시물을 읽은 후 나는 대답을 발견

Capybara webkit doesn't pass params from angular

문제가 내가 업로드를 보내 PATCH를 사용했다는 사실에서 온 것 같습니다. 메소드를 PUT으로 변경 한 후 테스트가 끝나기 시작했습니다.

관련 문제