调用devtools :: test()后在包中进行通用调度

时间:2015-10-22 19:56:39

标签: r devtools testthat

我对某事感到困惑。当我把这个功能放入包

oddTranspose <- function(x) {
  t(x)
}

一切正常

m <- matrix(c(1,0,0,0), nrow=2)
M <- as(m, "Matrix")

oddTranspose(m) # works
oddTranspose(M) # works

然后,当我使用devtools :: test()时,它停止工作

devtools::test()
oddTranspose(m) # works
oddTranspose(M)
## t.default(x) : argument is not a matrix

这对我来说有问题,因为我使用以下工作流测试我的包:

构建包,放置一个名为

的文件

package_root \ tests \ testthat_tests.R,正文

require(testthat)
require(myPackage)
test_check('myPackage')

然后在

package_root \ tests \ testthat \ file.R,我把测试

然后我用R

在R中测试它们
library(testthat)
setwd("package_root/tests")
devtools::test()

我该怎么办?

请注意,我免除了包裹开销的所有文本,但包裹的NAMESPACE导入了Matrix包并导出了oddTranspose,并且包裹描述&#34;取决于&#34;在Matrix上。

1 个答案:

答案 0 :(得分:0)

解决了这个问题的原因是(1)将所有setGeneric调用移动到all.R(或者早期加载.R文件)和(2)将所有setMethod调用移动到函数所在文件的内部。