2017-02-21 6 views
0

Я хотел бы получить некоторые отзывы и/или помочь.Тестирование Carrierwave - очистка или загрузка отдельных файлов?

У меня этот тест

scenario 'can create a new post' do 

    attach_file('Image', 'spec/files/hello-world.png') 
    fill_in 'Caption', with: 'Hello World! This is the first post!' 
    click_button 'Create Post' 

    expect(page).to have_css("img[src*='hello-world.png']") 
    expect(page).to have_content('Post was successfully created') 
end 

Этот тест загружает изображение в uploads/post/image/1/hello-world.png через Carrierwave, который, вероятно, тот же путь, по среде разработки и т.д., так что я интересно, если это будет вызывать какие-либо вопросы между файлами и сообщениями.

Мой вопрос заключается в том, чтобы сохранить отдельные загрузки файлов в каждой среде, или это то, что Rails может управлять внутренне?

ответ

0

Место хранения файлов - defined in a Carrierwave Uploader by the method store_dir. Если вам необходимо отделить файлы, созданные в различных средах, самым простым решением является добавление Rails.env в пути:

def store_dir 
    @store_dir ||= File.join(
    'public', 
    'uploads', 
    Rails.env, 
    model.class.table_name.to_s, 
    mounted_as.to_s, 
    model.id.to_s 
) 
end 

Это создаст путь: public/uploads/production/posts/image/1/image.png

+0

ли я также изменить и ' cache_dir' тоже? Также как я могу очистить 'uploads/test /' от любых файлов при завершении тестов? что-то похожее на то, что делает 'database_cleaner' на записи базы данных – Lykos

+0

Последний вопрос не является обязательным, так как я добавил папку' uploads' в gitignore – Lykos

+0

. Чтобы файл был убран, просмотрите http://stackoverflow.com/ Вопросы/12352062/rails-carrierwave-testing-how-to-remove-file-after-test Это специфичный rspec, но не должно быть так сложно использовать подобные методы с помощью minitest. – ReggieB

Смежные вопросы