我正在创建一个 R 包,发现将一个文件中的部分逻辑分解为我在同一文件中定义的内部帮助程序函数很有用。 我有一种特殊情况,我的函数决定通过match.fun()
使用哪个辅助函数。 由于它们对其他功能或人员没有用处,因此我不想将它们放在单独的文件中,也不想导出它们。
我所有的测试案例都使用 test_dir()
通过。 当我不导出这些函数时,我的测试案例在 R CMD 检查期间失败。
"object 'helperfunction1' of mode 'function' was not found", quote(get(as.character(FUN),
mode = "function", envir = envir)))
看完这篇文章后,如果我明确导出或添加导出条目到 NAMESPACE,我就能让事情正常工作,但我又不想导出这些条目。
有没有更好的方法可以做到这一点并且不需要我导出? (我承认问题的根源可能是match.fun()
的,并且对在运行时调用函数的其他方式持开放态度。
从记忆中,上次我阅读它时在文档中并不清楚(它可能已经更改(,但只要所有内容都在正确的目录中,它就可以正常工作(无需导出(:
你应该有一个文件:
tests/run-all.R
这看起来像:
library(testthat)
library(myPackage)
test_package("myPackage")
然后,您的单个测试文件应位于目录中inst/tests
这些将在您执行R CMD check
时运行,否则您可以手动调用test_package("myPackage")
R
。