fixture_file_upload имеет {файл} не существует ошибка - PullRequest
17 голосов
/ 26 января 2012

Ниже приведен мой тестовый код для загрузки файла.

describe "file process" do
 before(:each) do
   # debugger
   @file = fixture_file_upload('test.csv', 'text/csv')
 end

 it "should be able to upload file" do
  post :upload_csv, :upload => @file
  response.should be_success
 end
end

Однако, когда я запускаю rspec spec , я получаю сообщение об ошибке ниже

Failure/Error: @file = fixture_file_upload('test.csv', 'text/csv')
 RuntimeError:
   test.csv file does not exist
 # ./spec/controllers/quotation_controller_spec.rb:29:in `block (3 levels) in <top (required)>'

Я много гуглил, но все еще не мог понять, в чем причина. Есть идеи?

Ответы [ 2 ]

27 голосов
/ 06 марта 2013

Fixture_file_upload в основном все еще работает.Вам просто нужно убедиться, что путь к приспособлениям в вашем файле spec_helper.rb не закомментирован и правильно задан путь spec/fixtures, а также включить ActionDispath::TestProcess:

RSpec.configure do |config|
  config.include ActionDispatch::TestProcess

  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  config.fixture_path = "#{::Rails.root}/spec/fixtures"

  ...

И где вы указываете файл вваши тесты, убедитесь, что перед вашим именем файла стоит символ '/', как в следующем примере:

describe "POST /subscriber_imports" do
  let(:file) { { :file => fixture_file_upload('/files/data.csv', 'text/csv') } }
  subject { post :create, :subscriber_import => file }
  ...
end

Абсолютный путь к файлу - это базовый путь, указанный в config.fixture_path плюс относительный путь, указанный в fixture_file_upload вызов функции.Таким образом, в этом примере file.csv должен быть помещен в #{::Rails.root}/spec/fixtures/files/data.csv

0 голосов
/ 13 ноября 2012

На основе ответа с наибольшим количеством голосов на этот вопрос, вы должны поместить файл в {Rails.root} / spec / fixtures / files

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...