调用 devtools::test() 后在包中进行通用调度
Generic dispatching in a package after a call to devtools::test()
我对某事感到困惑。当我把这个函数放到一个包中时
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 中测试它们
library(testthat)
setwd("package_root/tests")
devtools::test()
我能做什么?
请注意,我为您省去了包开销的所有文本,但包的名称空间导入 Matrix 包并导出 oddTranspose,并且 Matrix 上的包 DESCRIPTION "depends"。
解决此问题的方法是 (1) 将所有 setGeneric 调用移至 all.R(或提前加载 .R 文件),以及 (2) 将所有 setMethod 调用移至函数所在的文件内部。
我对某事感到困惑。当我把这个函数放到一个包中时
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 中测试它们library(testthat)
setwd("package_root/tests")
devtools::test()
我能做什么?
请注意,我为您省去了包开销的所有文本,但包的名称空间导入 Matrix 包并导出 oddTranspose,并且 Matrix 上的包 DESCRIPTION "depends"。
解决此问题的方法是 (1) 将所有 setGeneric 调用移至 all.R(或提前加载 .R 文件),以及 (2) 将所有 setMethod 调用移至函数所在的文件内部。