2012-09-15 14 views
10

Testuję lib/pdf_helper.rb. Dlatego tworzę katalog spec/lib. Następnie utworzę katalog pdf_helper_spec.rb w katalogu. Podczas testowania tego folderu pdf powinien znajdować się w folderze publicznym, a tutaj jest mój kod:Katalog testowania istnieje z Rspec

require 'spec_helper' 
require 'pdf_helper' 

    describe "Pdfhelpers" do 
     it "Should be in public folder" do 
     file = File.new ("#{Rails.root}/public/pdf") 
     if File.exist?(file) == 'true' 
      puts "Success" 
     else 
      puts"failed" 
     end 


    end 
    end 

Mam rację? Jestem nowy na RSpec.

+0

Nie zapomnij sprawdzić dokumentacji: http://ruby-doc.org/core-2.2.0/File.html – Tass

Odpowiedz

4

Jeśli chcesz się dowiedzieć, czy plik jest katalogiem, możesz użyć funkcji File.directory?.

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

Działa zarówno w przypadku plików, jak i folderów.

2

bada ten sam, i oto co znalazłem:

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

'spodziewać (plik) .to be_directory (" ... ")' brzmi lepiej IMO – Trejkaz

+2

W słowach nieśmiertelnego Wielkiego Lebowskiego: "Tak, cóż ... to jest jak ... twoje zdanie, człowieku." ;-) – Tass

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

Ścieżka okazuje się być także dość czytelna dla tego rodzaju rzeczy.

require 'pathname' 

# ... 

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

Wolę zrobić coś takiego:

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) 

będzie to również pracować dla katalogów

0

umieścić tę definicję dopasowujący gdzieś odpowiednio:

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

Później będziesz móc go używać w ten sposób (na przykład):

describe "#{Rails.root}/public/pdf" do 
    subject { "#{Rails.root}/public/pdf" } 
    it { is_expected.to be_a_directory } 
end 
Powiązane problemy