问题:我如何才能在加载我的包而不是从我的包继承testthat
的环境中运行?
背景:包在“从包的命名空间环境继承的环境中”testthat
运行测试[参见test_check的文档]。这意味着它不能确保我已经正确地完成了我的导出,这让我被咬了好几次。
例如,我的包中有以下代码:
##' The foo() method
##' @param x object
##' @export
foo <- function(x)
UseMethod('foo')
##' @rdname foo
foo.data.frame <- function(x) {
message("foo data.frame")
}
##' @rdname foo
foo.default <- function(x) {
message("foo default")
}
在我的测试中如下:
x <- 5:13
foo(x)
那测试就好了。但是如果用户安装了这个包,他们会得到这个错误:
Error in UseMethod("foo") :
no applicable method for 'foo' applied to an object of class "c('integer', 'numeric')"
解决方案是@exports
为这两种方法声明,但测试没有捕捉到这一点真是太可惜了。
我更愿意从用户的角度运行我的所有测试,因为有时我倾向于搞砸我的导出。也许可以添加一个选项来testthat:::run_tests
选择所需的行为?