使用Roxygen和testthat,在R CMD检查期间调用的测试用例可以使用内部辅助函数的正确方法是什么?

时间:2013-10-09 18:11:31

标签: r roxygen2 testthat

我正在创建一个R包,并发现将一个文件中的部分逻辑分解为内部帮助函数很有用,我在同一个文件中定义它。我有一种特殊情况,我的函数决定通过match.fun()使用哪个辅助函数。由于它们对其他函数或人员没用,我不想将它们放在单独的文件中,我不想导出它们。

我的所有测试案例都使用test_dir()传递。当我不导出这些函数时,我的测试在R CMD检查期间失败了。

"object 'helperfunction1' of mode 'function' was not found", quote(get(as.character(FUN),
         mode = "function", envir = envir)))

在查看this post之后,如果我明确地将导出条目导出或添加到NAMESPACE,我就可以开始工作,但我又不想导出这些条目。

有没有更好的方法来执行此操作并且不需要我导出? (我承认问题的来源可能是match.fun(),并且在运行时可以使用其他方式调用函数。)

1 个答案:

答案 0 :(得分:0)

从内存中我上次阅读时文档中不清楚(可能已经更改),但只要一切都在正确的目录中,它就能正常工作(无需导出):

你应该有一个文件:

tests/run-all.R

看起来像:

library(testthat)
library(myPackage)

test_package("myPackage")

然后,您的各个测试文件应位于inst/tests

目录中

执行R CMD check后会执行这些操作,否则您可以手动拨打test_package("myPackage")中的R