ค้นหาคำถามนี้แล้วไม่พบหรือไม่พบหรือคำตอบใน Stack Overflow แต่พบที่อื่นดังนั้นฉันจึงขอให้มันพร้อมใช้งานบน SO
เฟรมเวิร์กรางมีฟังก์ชันfixture_file_upload
( Rails 2 Rails 3 , Rails 5 ) ซึ่งจะค้นหาไดเร็กทอรีการแข่งขันของคุณสำหรับไฟล์ที่ระบุและจะทำให้พร้อมใช้งานเป็นไฟล์ทดสอบสำหรับคอนโทรลเลอร์ในการทดสอบการทำงาน วิธีใช้:
1) วางไฟล์ของคุณที่จะอัปโหลดในการทดสอบในไดเร็กทอรีย่อย fixtures / files สำหรับการทดสอบ
2) ในการทดสอบหน่วยของคุณคุณสามารถรับไฟล์ทดสอบของคุณได้โดยเรียกใช้ fixture_file_upload ('path', 'mime-type')
เช่น:
bulk_json = fixture_file_upload('files/bulk_bookmark.json','application/json')
3) เรียกใช้วิธีการโพสต์เพื่อกดการกระทำของคอนโทรลเลอร์ที่คุณต้องการส่งคืนวัตถุโดย fixture_file_upload เป็นพารามิเตอร์สำหรับการอัปโหลด
เช่น:
post :bookmark, :bulkfile => bulk_json
หรือใน Rails 5: post :bookmark, params: {bulkfile: bulk_json}
สิ่งนี้จะทำงานผ่านกระบวนการโพสต์จำลองโดยใช้สำเนาชั่วคราวของไฟล์ในไดเร็กทอรีการแข่งขันของคุณจากนั้นกลับไปที่การทดสอบหน่วยของคุณเพื่อให้คุณสามารถเริ่มตรวจสอบผลลัพธ์ของโพสต์ได้