r - data.table и testthat пакет

Я создаю пакет, который работает с data.table и который должен быть протестирован с помощью пакета 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)]
}

При звонкеtest.datatable.testthat:::test() из командной строки я получаю ожидаемый результат:

    TYPE    MESSAGE
 1: ERROR       Test
 2: ERROR 1234567890

Однако при выполнении следующего модульного теста:

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)
})

Я получаю ошибку:

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: eval(code, new_test_environment)
3: eval(expr, envir, enclos)
4: test() at test.R:4
5: dt[, .(MESSAGE = strwrap(MESSAGE, width = 10)), by = .(TYPE)] at test.datatable.testthat/R/hello.R:5
6: `[.data.table`(dt, , .(MESSAGE = strwrap(MESSAGE, width = 10)), by = .(TYPE)) at C:\Users\D057806\Documents\R\test.datatable.testthat/R/hello.R:5
7: `[.data.frame`(x, i, j)

Как видите, в тесте вызывается [] data.frame. Моим первым предположением было то, что зависимость от пакета data.table объявлена ​​неправильно. Это мой файл ОПИСАНИЕ:

Package: test.datatable.testthat
Type: Package
Title: What the Package Does (Title Case)
Version: 0.1
Date: 2016-04-07
Authors@R: person("First", "Last", email = "[email protected]", role = c("aut", "cre"))
Description: More about what it does (maybe more than one line)
License: What license is it under?
LazyData: TRUE
Depends:
    data.table
Suggests:
     testthat
RoxygenNote: 5.0.1

В соответствии сИспользование пакета data.table внутри моего собственного пакета должно быть достаточно объявить data.table как зависимый пакет. Однако, похоже, что это не так.

Любые подсказки относительно того, почему моя функция работает, когда вызывается напрямую, но не в контексте testthat?

Ответы на вопрос(1)

Ваш ответ на вопрос