我发布了一个文本文件,其中列出了所有导出的函数。为了确保列出了所有函数,我想通过testthat创建一个单元测试,并将所有导出的函数与文本文件中的函数进行比较。我当前的方法读取该文件,并将其与ls("package:myPackage")进行比较。但此调用返回所有导入包的所有函数的长列表。有什么办法解决这个问题吗?
一种完全不同的方法是自动生成此文件。但我认为第一种方法更容易实现。但愿能去。
发布于 2018-07-04 18:23:31
感谢@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。
https://stackoverflow.com/questions/50819894
复制相似问题