2011-07-13 28 views
11

Perl birim testi ile kullanmak üzere sahte bir dosya sistemini simüle etmemi sağlayan bir yöntem veya modül var mı?Perl birim testi için sahte dosya sistemi

Birim testlerimde çeşitli Test::* ve Test::Mock* modüllerini kullanıyorum, ancak bazen bir dosya sistemini fake edebilmeyi isterim. Basit bir örnek (ve minimum gereksinim), sonucu -r veya -f dosya test operatörlerinden alır, böylece dosya testlerini gerçekleştiren nesneleri veya modülleri çağırdığımda sonucu daha kolay kontrol edebilirim.

Geçici dosyalar oluşturma veya dosya işlevlerini kendi işlevlerinde alay etme gibi sarmalama gibi, bu sorunu çözmenin her türlü yolu olduğunu biliyorum, ancak bazen Perl'e sahip olsaydım bazen hoş olurdu bana yalan ... Yani kod yeniden yazma öneririz çözümler ;-) gerekli değildir test edilen

Güncelleme:

daha böylece kod yeniden yazma, sadece bulundu ve this SO question okumak ettikten sonra test edilebilir daha hassas bir seçenek gibi görünüyor. Yine de, parmaklar ...

cevap

6

Bunlar bir göz atmaya değer: Filesys::Virtual ve Filesys::Virtual::Async. İlkini kullandım. Path::Class ve File::Temp ile karışık, her türlü kendi kendini temizleyen şeyleri çok ve zarif bir şekilde yapmak kolaydır. Test::Virtual::Filesystem da ilginç görünüyor.

+1

Bağlantılar için teşekkürler. Ben Filesys :: Virtual ile ne yapacağımı bilmediğimi itiraf ediyorum - başka bir şey için bir temel sınıf gibi görünüyor. Geçmişte nasıl kullandığını biraz açabilir misin lütfen? – Mike

+0

@Mike, üzgünüm, bunu gerçekten bağlamış olmalıyım: [Filesys :: Virtual :: Plain] (http://search.cpan.org/perldoc?Filesys::Virtual::Plain). Kutudan kullanıma hazır olmak çok daha yakın. – Ashley

+0

Teşekkürler - Ben de bulmayı buldum ve iyi bir olasılık gibi görünüyor. Henüz kontrol etme şansım olmadı, ama yakında bunu yapmayı umuyoruz. – Mike