使用fixture_file_upload
时,文件正在public/tmp
按预期上传。但是,这些文件是在工厂 ( factory_girl
) 中创建的,因此我public/tmp
的文件充满了测试期间上传的文件。
清除这些文件或在测试期间销毁对象后删除文件的推荐方法是什么?
使用fixture_file_upload
时,文件正在public/tmp
按预期上传。但是,这些文件是在工厂 ( factory_girl
) 中创建的,因此我public/tmp
的文件充满了测试期间上传的文件。
清除这些文件或在测试期间销毁对象后删除文件的推荐方法是什么?
如果您使用 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
块中删除测试期间创建的任何文件。