我有一个(主要是 Python)工作流程,它使用一些(可能是可悲的 Pythonesque)R 脚本用于可视化目的,并希望为所述 R 脚本设置测试。现在,我发现我应该仍然可以使用testthat
,而无需将所有内容都设置为包;但是,与那里的答案不同,我将代码设置在嵌套结构中:
project_root
|
Rscripts
+single_script.R
|
+tests
|
+test_single_script.R
+run_tests.R
为了处理这种结构,我尝试here
以一种我理解的方式使用和设置东西应该类似于该答案中描述的内容:
- 在
test_single_script.R
:
library(here)
here::i_am("Rscripts/tests/test_single_script.R")
path.to.single.script <- here("Rscripts", "single_script.R")
source(path.to.single.script)
- 在
run_tests.R
:
library(here)
library(testthat)
here::i_am("Rscripts/tests/run_tests.R")
test.single.script <- here("Rscripts", "tests", "test_single_script.R")
test_file(test.single.script)
看起来我得到了single_script.R
(print(path.to.single.script)
无论如何返回绝对路径)的绝对路径。但是,在尝试运行时run_tests.R
,我收到以下错误:
══ Testing test_single_script.R ═══════════════════════════════════════════
[ FAIL 1 | WARN 0 | SKIP 0 | PASS 0 ]
── Error (test_single_script.R:8:1): (code run outside of `test_that()`) ───────────────────────────
Error in `if (length(res) == 0 || res == -1) {
return(list(path = path, extension = ""))
}`: missing value where TRUE/FALSE needed
Backtrace:
1. base::source(path.to.single.script) test_single_script.R:8:0
10. vroom:::split_path_ext(basename(path))
[ FAIL 1 | WARN 0 | SKIP 0 | PASS 0 ]
我已经尝试tests
在项目根目录中运行它......结果相同。我查看了错误并没有发现任何问题。我已经尝试挖掘vroom
's 的代码以查看它可能会阻塞,但找不到任何东西。
我只是错过了一些令人尴尬的基本内容吗?