2016-08-28 12 views
7

sau khi suy nghĩ về chủ đề này mà không có kết quả, tôi hy vọng ai đó có thể cho tôi một gợi ý về phpUnit-Test để tải xuống. Làm thế nào tôi có thể tạo ra một thử nghiệm phpUnit cho chức năng này, mà thực hiện một tải về cho một Zip-File? Hay là có một thực hành bình thường để kiểm tra một logic như thế này?Làm thế nào để tạo một bài kiểm tra PHP-Unit để tải xuống tệp?

public function createOutput($zipFolderName) { 
     $zipFolderName = $zipFolderName."/imageResizer.zip"; 
     header('Content-Type: application/zip'); 
     header('Content-disposition: attachment; filename=' . $zipFolderName); 
     header('Content-Length: ' . filesize($zipFolderName)); 
     readfile($zipFolderName); 
    } 

Trả lời

3

tôi cảm thấy như có một vài thành phần để chức năng này, và mỗi phần phải được kiểm tra để đảm bảo rằng nó đang được thực hiện một cách chính xác:

  • xây dựng các $zipFolderName con đường đúng
  • bộ tiêu đề chính xác
  • tính toán đúng kích thước
  • đọc tệp

Dường như một số loại tệp trừu tượng xử lý có thể giúp bạn dễ dàng kiểm tra đơn vị phương pháp này.

class FileUtils { 
    public getDownloadFileName($folderName) {} 
    public getFileSize($file) {} 
    public readFile($file) {} 
} 

Bây giờ bạn có thể đưa một tệp tiện ích tệp vào chức năng của mình. Đối với mã sản xuất của bạn, lớp này sẽ lưu trữ các hoạt động của tệp tới hệ thống tệp thực, NHƯNG phép thử của bạn sẽ cung cấp một câu lệnh/mô hình cho phép bạn xác nhận rằng đơn vị của bạn đang thực hiện các hành động mong đợi.

Phương pháp tương tự có thể áp dụng cho phương pháp header.

0

tôi đề nghị bạn vfsStream thư viện:

vfsStream là một wrapper dòng PHP cho một hệ thống tập tin ảo mà có thể thể hữu ích trong các bài kiểm tra đơn vị để thử các hệ thống tập tin thực sự. Nó có thể được sử dụng với bất kỳ khung kiểm tra đơn vị nào, như PHPUnit hoặc SimpleTest.

thông tin hữu ích Cùng trong:

Hope trợ giúp này. Hãy cho tôi biết nếu bạn cần một số ví dụ

Các vấn đề liên quan