如何生成用于单元测试的临时文件?
How to generate a temporary file for use in a unit test?
测试方法允许向用户添加的包含数据的其他文件添加 path
。
例如,用户可能在 /workspace/data
目录中存储了一个名为 data.txt
的文件。我们想将这个目录的路径添加到一个已经存在的名为 DATA_PATH
.
的数组中
方法:
def add_custom_path(path)
DATA_PATH.unshift(path)
end
其中 path
是 Rails 应用程序中用户存储文件的位置。
gem使用test-unit
。
问题:
有没有办法在某个目录下临时生成一个文件,运行一个assert_not_empty
测试,然后让这个文件消失?
我没有为 gem 编写测试的经验,因此非常感谢任何指导。
The .create
and .new
methods of Ruby's Tempfile
take a second argument which is the directory you want the file to be in 和 Tempfile
创建的文件在临时文件的 File
对象被垃圾回收或 Ruby 退出时自动删除。所以你可以创建一个临时文件,
tempfile = Tempfile.new('filename', 'directoryname')
写入它,进行测试,让 Ruby 为您清理它。
请注意,第一个参数不是文件的完整非限定名称,而是 Tempfile
添加了消除歧义字符的部分,因此您可以安全地在测试套件中多次执行此操作。
此外,如果您需要文件具有特定的后缀,您可以这样做,例如
tempfile = Tempfile.new(['filename', '.rb'], 'directoryname')
测试方法允许向用户添加的包含数据的其他文件添加 path
。
例如,用户可能在 /workspace/data
目录中存储了一个名为 data.txt
的文件。我们想将这个目录的路径添加到一个已经存在的名为 DATA_PATH
.
方法:
def add_custom_path(path)
DATA_PATH.unshift(path)
end
其中 path
是 Rails 应用程序中用户存储文件的位置。
gem使用test-unit
。
问题:
有没有办法在某个目录下临时生成一个文件,运行一个assert_not_empty
测试,然后让这个文件消失?
我没有为 gem 编写测试的经验,因此非常感谢任何指导。
The .create
and .new
methods of Ruby's Tempfile
take a second argument which is the directory you want the file to be in 和 Tempfile
创建的文件在临时文件的 File
对象被垃圾回收或 Ruby 退出时自动删除。所以你可以创建一个临时文件,
tempfile = Tempfile.new('filename', 'directoryname')
写入它,进行测试,让 Ruby 为您清理它。
请注意,第一个参数不是文件的完整非限定名称,而是 Tempfile
添加了消除歧义字符的部分,因此您可以安全地在测试套件中多次执行此操作。
此外,如果您需要文件具有特定的后缀,您可以这样做,例如
tempfile = Tempfile.new(['filename', '.rb'], 'directoryname')