2012-09-15 32 views
10

ile birlikte var lib/pdf_helper.rb test ediyorum. Bu yüzden spec/lib dizinini oluşturuyorum. Sonra spec/lib dizininde bir dosya pdf_helper_spec.rb oluşturun. Ben bu pdf klasörünün ortak klasörde olması gerektiğini test ediyorum ve buradaki kodumTest Dizini, Rspec

Doğru mu? RSpec'de yeniyim.

+0

Dokümanları kontrol etmeyi unutmayın: http://ruby-doc.org/core-2.2.0/File.html – Tass

cevap

4

Bir dosyanın bir dizin olup olmadığını öğrenmek istiyorsanız, File.directory? işlevini kullanabilirsiniz.

19
expect(File).not_to exist("#{Rails.root}/public/pdf") 

Hem dosya hem de klasör için çalışır.

2

kendimi burada bu araştırma ve buldum budur:

File.directory?("#{Rails.root}/public/pdf").should be true 
+0

'bekliyor (Dosya) .to be_directory (" ... ")' daha iyi okur IMO – Trejkaz

+2

Ölümsüz Big Lebowski'nin sözleriyle, "Evet, peki ... bu senin fikrin gibi, adamım." ;-) – Tass

0
expect(File.directory?("#{Rails.root}/public/pdf")).to be true 
1

Pathname da bu tür bir şey için oldukça okunabilir olarak çıkıyor. Daha sonra

RSpec::Matchers.define :be_a_directory do 
    match do |dir_path| 
    Dir.exist?(dir_path) 
    end 
end 

sen edeceğiz:

photo_path = photo.path 
expect { File.open(photo_path) }.to_not raise_error(Errno::ENOENT) 
photo.destroy! 
expect { File.open(photo_path) }.to raise_error(Errno::ENOENT) 

bu da bir yerde uygun bu eşleştirici tanımı koyun dizinleri

0

Böyle bir şey yapmayı tercih bunu şu şekilde kullanabilir (örneğin):

describe "#{Rails.root}/public/pdf" do 
    subject { "#{Rails.root}/public/pdf" } 
    it { is_expected.to be_a_directory } 
end 
0

için çalışacaktır:

require 'pathname' 

# ... 

expect(Pathname.new('file.txt')).to exist 
expect(Pathname.new('file.txt')).to be_file 
expect(Pathname.new('dir')).to be_directory