0

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

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

4

1 回答 1

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块中删除测试期间创建的任何文件。

于 2013-08-09T15:24:23.390 回答