在Rails中设置fixture_file_upload的目录?

时间:2013-08-09 13:43:57

标签: ruby-on-rails ruby factory-bot

使用fixture_file_upload时,文件会按预期上传到public/tmp。但是,这些文件是在工厂(factory_girl)中创建的,因此我的public/tmp充满了在测试期间上传的文件。

在测试过程中销毁对象后,清除这些文件或删除文件的推荐方法是什么?

1 个答案:

答案 0 :(得分:2)

如果您使用RSpec,您可以定义在套件之前或之后运行的块。 我之前优先删除文件。这将在测试后保留文件,因此我可以检查临时文件;但是它会在测试之前清除旧文件,所以每次运行测试时我都有一条干净的路径。

spec/spec_helper.rb中的

RSpec.configure do |config|
  ......
  config.before(:all) do
    if Rails.env.test? || Rails.env.cucumber?
      FileUtils.rm_rf(Dir["#{pstore_path}/[^.]*"])
    end
  end

pstore_path是我的spec_helper文件中的另一种方法。您可以更改行FileUtils.rm_rf....以仅删除要删除的文件而不是整个目录,如本例所示。

您可以在过滤器之前和之后组合以记录测试之前已存在的文件,然后在config.after块中删除测试期间创建的所有文件。