如何生成用于单元测试的临时文件?

时间:2016-06-01 20:47:21

标签: ruby-on-rails ruby rubygems testunit

要测试的方法允许将public LoadComponentAsync(componentPath:string, componentName:string, locationAnchor:ViewContainerRef) { System.import(componentPath) .then(fileContents => { console.log(fileContents); return fileContents[componentName] }) .then(component => { this.resolver.resolveComponent(component).then(factory => { locationAnchor.createComponent(factory, 0, locationAnchor.injector); }); }); } 添加到用户添加的包含数据的其他文件中。

例如,用户可能会在path目录中存储名为data.txt的文件。我们希望将此目录的路径添加到名为/workspace/data的现有数组中。

方式:

DATA_PATH

其中def add_custom_path(path) DATA_PATH.unshift(path) end 是用户存储文件的Rails应用程序中的位置。

宝石使用path

问题:

有没有办法在某个目录中临时生成文件,运行test-unit测试,然后让文件消失?

我没有为宝石编写测试的经验,因此非常感谢任何指导。

1 个答案:

答案 0 :(得分:2)

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对象被垃圾收集或Ruby退出时,File创建的文件会自动删除。所以你可以创建一个临时文件,

tempfile = Tempfile.new('filename', 'directoryname')

写信给它,做你的测试,让Ruby为你清理它。

请注意,第一个参数不是文件的整个非限定名称,而是Tempfile添加消除歧义字符的部分,因此您可以在测试套件中安全地执行此操作。

此外,如果您需要文件具有特定后缀,您可以执行此操作。

tempfile = Tempfile.new(['filename', '.rb'], 'directoryname')