2010-02-10 14 views
5

Bu benim sahip olduğum şey:Rspec kullanarak bir dosyanın varlığını nasıl sahte yapabilirim?

it "should be able to get a valid directory path" do 
    @asset.some_file_path.should == "/something/test.jpg" 
end 

Sorun şu ki, eğer mevcut bir dosya yoksa, "/not_here_yet.jpg" ifadesini "some_file_path" döndürür.

def some_file_path 
    if File.exists(self.my_image_path) 
    return my_image_path 
    else 
    return "/not_here_yet.jpg 
    end 
end 

Testlerimde gerçekten yeni bir dosya oluşturmak istemiyorum. Dosyanın varlığını taklit etmenin bir yolu var mı?

Şununla ilgili düşüncelerim var:

it "should be able to get a valid directory path" do 
    AwesomeFakeFileCreator.create(@asset.my_image_path) 
    @asset.some_file_path.should == "/something/test.jpg" 
end 

Bu mümkün mü? Böyle bir şeyi nasıl yapabilirim?

Düzeltme: FakeFS modeline biraz baktım ama eminim ki

cevap

6

Bu muhtemelen I gibi bir çok yararsız cevaptır

it "should be able to get a valid directory path" do 
    File.stub!(:exists?).and_return(true) 
    @asset.stub!(:my_image_path).and_return("/something/test.jpg") 
    @asset.some_file_path.should == "/something/test.jpg" 
end 
+0

Bunun ne yaptığını biraz detaylandırır mısınız? – marcgg

+1

İlk satır, dosyanın varolduğunu ve ikinci satırın varlık nesnesi üzerinde my_image_path yöntemini saptadığını ve bu örnekte bazı_dosya_yolu yönteminizin geri döneceği dosya yolunu döndürdüğünü, yani tüm örnekle ilgili olduğunu saptadı. Özet olarak, varsa yolu iade edin. – nas

+0

Beni mutlu etmene ya da bir şeyden sakınmana gerek yok - soruyu sormadım - ama korkarım ki bunu anlamadım. – Shadowfirebird

-2

satırlarına bir şeyler yapabileceğini Sadece kendimi sadece otomatik testler etrafında alıyorum, ama:

Anladığım kadarıyla, sadece iki koşulu test etmeniz gerekiyor: dosya var ve dosya yok mu?

Varoluşların test edilmesi yeterince kolaydır: Var olmayan bir my_image_path ile bir Varlık oluşturun ve işlev '/not_here_yet.jpg' işlevini döndürüp döndürmediğini kontrol edin.

Şüphesiz diğer vakayı aynı şekilde test edebilirsiniz? .jpg uzantılı boş bir dosya oluştur, ardından ona işaret eden bir Varlık ve işlevin doğru ismi döndürüp döndürmediğini kontrol et.

+0

durumdaysa, anında dosya oluşturmak istemiyorum. Testler daha yavaş olurdu ve dosyayı oluştururken/silmemde çok dikkatli olmalıyım. – marcgg

+0

:) Muhtemelen yararsız bir cevap olacağını söylemiştim ... – Shadowfirebird

0

Belki de Dosyanızın doğru yolu ile sahte olabilirsiniz. Döndürmek istediğiniz her dosya için sahte

İlgili konular