로컬 디스크에서 csv 파일을 업로드하고 사용자 세부 정보를 내 응용 프로그램에 내 보내려면 users_controller에 다음과 같은 기능이 있습니다. 코드가 응용 프로그램에서 올바르게 작동하지만 테스트에서 csv를 전달하는 방법은 확실하지 않습니다. 내 기능은 다음과 같습니다 :rspec에 CSV 파일을 매개 변수로 전달
def upload
if request.post?
if (params[:user].nil? || params[:user][:csv].blank?)
flash[:notice] = "Please provide a csv file to upload."; return
end
file = params[:user][:csv].read
CSV.parse(file, headers: true, header_converters: :symbol).each { |row| Cortex::User.create(row.to_hash) }
respond_to do |format|
format.html { redirect_to admin_engine.cortex_users_path }
format.json { head :no_content }
end
else
# Provide upload view
end
end
다음은 rspec 테스트에서이를 다루려고 시도한 나의 시도입니다. 내가 커버리지 보석으로 LOC 범위를 검사 할 때
it "should be a success" do
post "admin/users/upload", :user => @user, :user_csv => fixture_file_upload(Admin::Engine.root.join('spec/dummy/tenants_sample.csv')), :session_token => @auth_token
response.code.should eq("200")
end
나는 문이 전에 종료되면 테스트가 처음 두 들어가는 것을 볼 수 있습니다.
필자는이 파일을 전달하는 방법에 대한 조언을 얻었으므로 나머지 기능에서 읽을 수 있습니다.
건배