我发送了一个包含所有导出功能的文本文件。为了确保列出所有函数,我想通过testthat
创建一个单元测试,并将所有导出的函数与文本文件中的函数进行比较。我当前的方法读入文件并将其与ls("package:myPackage")
进行比较。但是这个调用会返回所有导入包的所有函数的长列表。任何想法如何解决这个问题?
完全不同的方法是自动生成此文件。但我认为第一种方法更容易实现。希望。
答案 0 :(得分:0)
感谢@ Emmanuel-Lin这是我的解决方法:
require(data.table)
test_that("Function List", {
# read namespace and extract exported functions
funnamespace = data.table(read.table(system.file("NAMESPACE", package = "PackageName"), stringsAsFactors = FALSE))
funnamespace[, c("status", "fun") := tstrsplit(V1, "\\(")]
funnamespace[, fun := tstrsplit(fun, "\\)")]
# read function list
funlist = read.csv2(system.file("subdirectory", "functionList.txt", package = "PackageName"), stringsAsFactors = FALSE)
# test
expect_equal(funnamespace[status == "export", fun], funlist[, 1])
})
很显然,我懒于计算出正确的正则表达式以将两个tstrsplit
替换为一行。