黄瓜方案后删除文件夹

时间:2011-01-31 13:42:54

标签: ruby-on-rails cucumber paperclip

我有2个黄瓜场景模拟回形针图像上传。一旦方案完成,我想再次删除这些文件夹。

我有以下附件文件夹结构: :url => “的 /系统/:附接/:listing_id /:ID /:STYLE_:文件名

Paperclip会自动删除:id /:style_:filename 文件夹,但不会删除父文件夹。

我的列表控制器中有以下内容(1个列表中有许多图像),在删除列表时,可以很好地删除带有列表ID的图像文件夹。我需要在步骤运行后在Cucumber中模拟相同的内容。

def destroy 
    @listing = Listing.find(params[:id])  

    # if destroy was a success, remove the listing image folder
    if @listing.destroy 


    end 

    require 'fileutils'
    dir = Rails.root + '/system/photos/' + @listing.id.to_s()
    FileUtils.rm_rf(dir)


    respond_to do |format| 
        format.html { redirect_to(listings_url) } 
        format.xml { head :ok } 
    end 
end 

我可以a)告诉黄瓜在运行场景后删除:listing_id文件夹名称或b)告诉黄瓜删除列表作为最后一步?

我已经尝试将此添加到我的黄瓜env.rb文件中:

AfterStep('@paperclip') do
      # This will only run before steps within scenarios tagged
      # with @cucumis AND @sativus.
        # delete folders that were created with paperclip during the test
        require 'fileutils'
        #@listing.id = 55
        #dir = Rails.root + '/system/photos/' + @listing.id.to_s()
        dir = Rails.root + '/system/photos/55' # NOT WORKING
        FileUtils.rm_rf(dir)
    end

但这会导致问题,因为1)我不知道如何从该场景中获取@ listing.id,以及2)即使我对其进行硬编码(如上所述)也不会删除它。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我会发表评论,但没有得分(或者我会假设)这样做。

确实没有理由不这样做。您是否确认FileUtils.rm_rf(dir)确实删除了测试环境中的目录?

您可以在'script / console test'中进行测试。

答案 1 :(得分:0)

已经有点老了,但是我在这里遇到同样的问题就是我做的事情:

dir = Rails.root + 'images/'
dir.rmtree if dir.directory?

# or the short form, if you know the directory will be there
(Rails.root + 'images/').rmtree

所以我猜问题是文件夹开头的'/'。至少对我来说,它不适用于那种斜线。

答案 2 :(得分:0)

您可以加入Cucumber at_exit以删除您喜欢的任何文件夹。我使用features/support/uploads_cleaner.rb中的附加代码。

# Removes uploaded files when all scenarios for the current test process
# are finished. Ready for parallel_tests, too.

require 'fileutils'

at_exit do
  directory_name = "#{ Rails.env }#{ ENV['TEST_ENV_NUMBER'] }"
  uploads_path = Rails.root.join('public/system', directory_name)
  FileUtils.remove_dir(uploads_path) if uploads_path.directory?
end

从此makandra Card转发。