0
我在我的users_controller中有以下函數來從本地磁盤上傳csv文件並將其中的用戶詳細信息導出到我的應用程序中。代碼在應用程序中正常工作,但我不確定如何在測試中傳遞csv。我的功能如下:將CSV文件作爲參數傳遞給rspec
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的測試,來彌補這一嘗試。
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
當我使用coverage gem檢查LOC覆蓋範圍時,我可以看到測試在退出前輸入了前兩個if語句。
任何人都可以獲得關於如何傳遞該文件的任何提示,以便可以通過該函數的其餘部分讀取該文件。
乾杯