小编uta*_*tal的帖子

r - data.table和testthat包

我正在构建一个使用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)

r testthat data.table r-package

8
推荐指数
1
解决办法
821
查看次数

标签 统计

data.table ×1

r ×1

r-package ×1

testthat ×1