2011-07-13 41 views
11

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::*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 ...

Trả lời

6

Đây là những giá trị đáng xem: Filesys::VirtualFilesys::Virtual::Async. Tôi đã sử dụng đầu tiên. Pha trộn với Path::ClassFile::Temp nó rất dễ dàng để làm tất cả các loại tự làm sạch những thứ tersely và thanh lịch. Test::Virtual::Filesystem cũng có vẻ thú vị.

+1

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

+0

@ 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

+0

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

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