我想测试一个函数返回预期的data.frame。 data.frame太大而无法在R文件中定义(例如,使用诸如structure()
之类的东西)。当我尝试从磁盘进行简单检索时,我的环境出现问题,例如:检索期望的data.frame测试期望
test_that("SO example for data.frame retreival", {
path_expected <- "./inst/test_data/project_longitudinal/expected/default.rds"
actual <- data.frame(a=1:5, b=6:10) #saveRDS(actual, file=path_expected)
expected <- readRDS(path_expected)
expect_equal(actual, expected, label="The returned data.frame should be correct")
})
行在控制台中运行时正确执行。但是当我运行devtools::test()
时,从文件中读取rds/data.frame时会发生以下错误。
1. Error: All Records -Default ----------------------------------------------------------------
cannot open the connection
1: withCallingHandlers(eval(code, new_test_environment), error = capture_calls, message = function(c) invokeRestart("muffleMessage"),
warning = function(c) invokeRestart("muffleWarning"))
2: eval(code, new_test_environment)
3: eval(expr, envir, enclos)
4: readRDS(path_expected) at test-read_batch_longitudinal.R:59
5: gzfile(file, "rb")
为了做到这一点,需要对环境进行哪些调整?如果没有简单的方法,测试大型数据框架的好方法是什么?
我没有使用过这个(因此未经测试),但'system.file()'不适用于此?它允许您指定一个包,然后指定从包基到文件的路径位。所以给'path_expected < - system.file(“inst”,“test_data”,“project_longitudinal”,expected“,”default.rds“)'尝试... –
这有助于我分心环境,忘记了测试过程改变了工作目录,出于某种原因,我遇到了'path_qualified < - base :: system.file(“inst/test_data/project_longitudinal/expected/dummy.rds”,package =“REDCapR”)的问题。 'path_qualified < - base :: file.path(devtools :: inst(name =“REDCapR”),“test_data/project_longitudinal/expected/dummy.rds”)'如果你发布一个正式的答案指向我的工作目录问题,我很乐意接受它 – wibeasley