R with testthat:获取导出函数的列表

时间:2018-06-12 14:41:06

标签: r unit-testing

我发送了一个包含所有导出功能的文本文件。为了确保列出所有函数,我想通过testthat创建一个单元测试,并将所有导出的函数与文本文件中的函数进行比较。我当前的方法读入文件并将其与ls("package:myPackage")进行比较。但是这个调用会返回所有导入包的所有函数的长列表。任何想法如何解决这个问题?

完全不同的方法是自动生成此文件。但我认为第一种方法更容易实现。希望。

1 个答案:

答案 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替换为一行。