我正在构建一个使用data.table的包,应该使用package testthat进行测试.虽然代码在从命令行调用时工作正常,但在从测试用例调用时会遇到问题.似乎在运行测试时使用了基本包中的[]函数,即data.frames的函数.
我创建了一个最小的例子,可以在这里找到:https://github.com/utalo/test_datatable_testthat
该软件包包含一个函数:
test <- function() {
dt <- data.table(MESSAGE="Test 1234567890",TYPE="ERROR")
dt[,.(MESSAGE=strwrap(MESSAGE,width = 10)),by=.(TYPE)]
}
Run Code Online (Sandbox Code Playgroud)
test.datatable.testthat:::test()从命令行调用时,我得到了预期的结果:
TYPE MESSAGE
1: ERROR Test
2: ERROR 1234567890
Run Code Online (Sandbox Code Playgroud)
但是,在执行以下单元测试时:
test_that("Test package",{
dt <- test()
expected_res <- structure(list(TYPE = c("ERROR", "ERROR"),
MESSAGE = c("Test","1234567890")),
row.names = c(NA, -2L), class = c("data.table","data.frame"),
.Names = c("TYPE", "MESSAGE"))
expect_equal(dt,expected_res)
})
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
1
1. Error: Test package -------------------------------------------------------------------------------------------------------
could not find function "."
1: withCallingHandlers(eval(code, new_test_environment), error = capture_calls, message = function(c) invokeRestart("muffleMessage"))
2: …Run Code Online (Sandbox Code Playgroud)