我想測試一個函數返回預期的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