我正在为导入xml文件的R函数编写测试settings.xml.
目前,当我为依赖于内容的函数编写测试时foo.xml,包括read.settings以下示例中的函数:
writeLines("<fee><fi><\fi>\fee>", con = "/tmp/foo.xml")
settings <- read.settings("/tmp/foo.xml")
file.remove("/tmp/foo.xml")
Run Code Online (Sandbox Code Playgroud)
但是,出现了许多与使测试系统无关的问题.例如,在测试目录/tmp/中read.settings()留下孤立文件等可能无法写入或出错.这是一个简单的例子,我可以想办法解决这些问题,但我记得在回答上一个问题时有这样的解决方案,我现在找不到,其中con不是文件而是内存中的对象.我确信在很多情况下,不实际编写文件是有用的.
?connections似乎是一个很好的领导,但我不清楚如何使用提供的信息跟进(但不要太开放)
这是一个可能有用的结构.tempfile()在任何操作系统上返回临时文件的有效名称,并且on.exit(unlink())无论发生什么,该调用都可确保删除临时文件.
test1 <- function() {
temp <- tempfile()
on.exit(unlink(temp))
writeLines("<fee><fi><\fi>\fee>", con = temp)
settings <- readLines(temp)
settings
}
test1()
# [1] "<fee><fi><\fi>\fee>"
Run Code Online (Sandbox Code Playgroud)