我正在尝试为R中的包功能编写测试。
假设我们有一个函数,可以简单地使用x
将字符串writeLines()
写入磁盘:
exporting_function <- function(x, file) {
writeLines(x, con = file)
invisible(NULL)
}
一种测试方法是检查文件是否存在。通常,它最初不应该存在,但是在运行导出功能后应该存在。另外,您可能需要测试文件大小是否大于0:
library(testthat)
test_that("file is written to disk", {
file = 'output.txt'
expect_false(file.exists(file))
exporting_function("This is a test",
file = file)
expect_true(file.exists(file))
expect_gt(file.info('output.txt')$size, 0)
})
这是测试它的好方法吗?在CRAN Repository Policy中声明为Packages should not write in the user’s home filespace (including clipboards), nor anywhere else on the file system apart from the R session’s temporary directory
。此测试会违反此约束吗?
有一个Expect_output_file函数。从文档和示例中,我不确定这是否是测试功能的更合适的期望。它需要一个object
参数,应为object to test
。我要测试的对象是什么?
答案 0 :(得分:1)
这似乎违反了CRAN政策。为什么不使用
简单地写入临时目录file <- tempfile()
代替
file = 'output.txt'
?
关于它是否是一个很好的测试:尝试重新读回文件并确认所读取的内容与所写的内容匹配会更好吗?在您的玩具示例中这很容易。在实际中可能会比较困难,但是将导入功能与导出功能配对总是一个好主意。