With Roxygen and testthat, what is the proper way to make internal helper functions available to testcases called during R CMD check?

喜你入骨 提交于 2019-12-12 20:41:13

问题


I am creating an R package, and found it useful to break parts of the logic in one file into internal helper functions, which I define in the same file. I have sort of a special case where my function decides which helper function to use via match.fun(). Since they won't be useful to other functions or people, I don't want to put these in separate files, and I don't want to export them.

All my testthat cases pass using test_dir(). When I don't export these functions, my testthat cases fail during R CMD check.

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

After looking at this post, I am able to get things to work if I explicitly export or add export entries to NAMESPACE, but again I don't want to export these.

Is there a better way to do this and doesn't require me to export? (I'll admit that the source of the issue may be match.fun() and am open to other ways of calling functions at runtime.)


回答1:


From memory it wasn't clear in the documentation last time I read it (it may have changed), but it will work correctly (without having to export) so long as everything is in the right directories:

You should have a file:

tests/run-all.R

That looks like:

library(testthat)
library(myPackage)

test_package("myPackage")

Then your individual test files should be in the directory inst/tests

These will be run when you do R CMD check, otherwise you can call test_package("myPackage") in R manually.



来源:https://stackoverflow.com/questions/19279544/with-roxygen-and-testthat-what-is-the-proper-way-to-make-internal-helper-functi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!