2012-09-15 23 views
10

Estoy probando lib/pdf_helper.rb. Entonces creo el directorio spec/lib. Luego creo un archivo pdf_helper_spec.rb en el directorio spec/lib. Como estoy probando esa carpeta en pdf debería estar en una carpeta pública y aquí está mi códigoDirectorio de pruebas existe con 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 

¿Estoy en lo cierto? Soy nuevo en RSpec.

+0

No olvide verificar la documentación: http://ruby-doc.org/core-2.2.0/File.html – Tass

Respuesta

4

Si quiere saber si un archivo es un directorio, puede usar la función File.directory?.

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

Funciona tanto para archivos como para carpetas.

2

investigando este mismo, y esto es lo que encontré:

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

'expect (File) .to be_directory (" ... ")' lee mejor IMO – Trejkaz

+2

En las palabras del inmortal Big Lebowski, "Sí, bueno ... así es como ... tu opinión, hombre". ;-) – Tass

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

nombre de ruta también resulta ser bastante legible para este tipo de cosas.

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

Prefiero hacer algo como esto:

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) 

esto también funcionará para directorios

0

Poner esta definición matcher algún lugar apropiado:

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

Posteriormente se le poder usarlo así (por ejemplo):

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