Có phương pháp hoặc mô-đun cho phép tôi mô phỏng hệ thống tệp giả để sử dụng với thử nghiệm đơn vị Perl không?Hệ thống tệp giả cho thử nghiệm đơn vị Perl
Tôi sử dụng một loạt các mô-đun Test::*
và Test::Mock*
trong thử nghiệm đơn vị của mình, nhưng đôi khi tôi muốn có thể giả mạo hệ thống tệp. Một ví dụ đơn giản (và yêu cầu tối thiểu) sẽ giả mạo kết quả từ các toán tử thử nghiệm tệp -r
hoặc -f
, để khi tôi gọi các đối tượng hoặc mô-đun thực hiện kiểm tra tệp, tôi có thể dễ dàng kiểm soát kết quả.
Tôi biết rằng có rất nhiều cách để giải quyết vấn đề này, chẳng hạn như tạo tệp tạm thời hoặc kiểm tra tệp trong các chức năng của riêng chúng, sau đó có thể được mô phỏng, nhưng đôi khi sẽ tốt hơn nếu tôi có thể lấy Perl để nói dối tôi ... vì vậy, các giải pháp đề nghị viết lại mã đang được thử nghiệm không phải ;-)
cập nhật:
Sau khi chỉ tìm thấy và đọc this SO question, viết lại đoạn code để nó là hơn có thể kiểm chứng trông giống như tùy chọn hợp lý hơn. Tuy nhiên, các ngón tay bị gạch chéo ...
Cảm ơn các liên kết. Tôi thú nhận là không chắc chắn những gì tôi sẽ làm với Filesys :: Virtual - nó dường như là một lớp cơ sở cho cái gì khác. Bạn có thể mở rộng một chút về cách bạn đã sử dụng nó trong quá khứ không? – Mike
@ Giống như, xin lỗi, tôi thực sự cần phải có liên kết này: [Filesys :: Virtual :: Plain] (http://search.cpan.org/perldoc?Filesys::Virtual::Plain). Nó gần hơn để sẵn sàng để sử dụng ra khỏi hộp. – Ashley
Cảm ơn - Tôi cũng đã tìm ra điều đó và có vẻ như là một khả năng tốt. Tôi đã không có cơ hội để kiểm tra nó ra được nêu ra, nhưng hy vọng sẽ làm như vậy sớm. – Mike