r - tabla de datos y prueba de ese paquete

Estoy creando un paquete que funciona con data.table y que debe probarse usando package testthat. Si bien el código funciona bien cuando se llama desde la línea de comandos, me encuentro con problemas al llamar desde un caso de prueba. Parece que la función [] del paquete base, es decir, la función para data.frames se usa al ejecutar las pruebas.

He creado un ejemplo mínimo que se puede encontrar aquí:https://github.com/utalo/test_datatable_testthat

El paquete contiene una sola función:

test <- function() {
   dt <- data.table(MESSAGE="Test 1234567890",TYPE="ERROR")
   dt[,.(MESSAGE=strwrap(MESSAGE,width = 10)),by=.(TYPE)]
}

Cuando llametest.datatable.testthat:::test() de la línea de comando obtengo el resultado esperado:

    TYPE    MESSAGE
 1: ERROR       Test
 2: ERROR 1234567890

Sin embargo, al ejecutar la siguiente prueba unitaria:

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

Me sale un error:

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)

Como puede ver, dentro de la prueba se llama [] de data.frame. Mi primera suposición fue que la dependencia del paquete data.table no se declara correctamente. Este es mi archivo DESCRIPTION:

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

De acuerdo aUsando el paquete data.table dentro de mi propio paquete debería ser suficiente declarar data.table como un paquete dependiente. Sin embargo, este no parece ser el caso aquí.

¿Alguna pista de por qué mi función funciona cuando se llama directamente pero no en el contexto de testthat?

Respuestas a la pregunta(1)

Su respuesta a la pregunta