rSpec在套件完成后销毁文件

8
在我的rSpec测试中,我测试了paperclip上传照片到我的系统并将其保存给定用户的能力。
这很好,但当我的测试完成后,我的系统上会有所有这些额外的文件。如何在我的测试套件完成时自动删除它们。
谢谢, 迈克

在每次操作后,您应该运行Photo.delete_all以删除数据库条目和图像。 - Jakub Oboza
知道如何在Minitest中删除已上传附件的文件夹吗? - Jwan622
2个回答

11

直接删除整个test目录更为简单。另外,开销也稍微小一些,更易于阅读。

# spec_helper.rb

config.after(:suite) do
  FileUtils.rm_rf(Dir["#{Rails.root}/public/system/test"])
end

1
假设您在路径中使用了:rails_env,如下所示:path: ':rails_root/public/system/:rails_env/:class/:attachment/:id_partition/:style/:filename' - Loren

6

我还没有使用过Paperclip,但我猜这些文件保存在一个比较固定的位置,例如(举个例子)tmp/paperclip/photos/

如果是这种情况,在你的spec_helper中,你可以添加以下内容:

config.after(:suite) do # or :each or :all
    Dir["#{Rails.root}/tmp/paperclip/**/*"].each do |file|
        File.delete(file)
    end
end

1
如果你将最后一个 * 改为 *.*,那么你就可以避免尝试删除目录。 - thomasfedb
如果你使用minitest会怎么样? - Jwan622

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接