Ответ 1
expect(File).not_to exist("#{Rails.root}/public/pdf")
Будет работать как для файлов, так и для папок.
Я тестирую lib/pdf_helper.rb
. Поэтому я создаю каталог spec/lib
. Затем я создаю файл pdf_helper_spec.rb
в каталоге spec/lib
. Поскольку я проверяю, что папка pdf должна находиться в общей папке, а вот мой код
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
Я прав? Я новичок в RSpec.
expect(File).not_to exist("#{Rails.root}/public/pdf")
Будет работать как для файлов, так и для папок.
Если вы хотите узнать, является ли файл каталогом, вы можете использовать функцию File.directory?
.
Исследование этого сам, и вот что я нашел:
File.directory?("#{Rails.root}/public/pdf").should be true
Путь также оказывается достаточно читаемым для такого рода вещей.
require 'pathname'
# ...
expect(Pathname.new('file.txt')).to exist
expect(Pathname.new('file.txt')).to be_file
expect(Pathname.new('dir')).to be_directory
expect(File.directory?("#{Rails.root}/public/pdf")).to be true
Я предпочитаю делать что-то вроде этого:
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)
это также будет работать для каталогов
Поместите это определение сопряжения где-нибудь подходящим:
RSpec::Matchers.define :be_a_directory do
match do |dir_path|
Dir.exist?(dir_path)
end
end
Впоследствии вы сможете использовать его (например):
describe "#{Rails.root}/public/pdf" do
subject { "#{Rails.root}/public/pdf" }
it { is_expected.to be_a_directory }
end