test_file() работи, но test() се проваля с data.table

Въпросът ми е подобен на r devtools test() грешки, но testthat test_file () работи, но не съм сигурен дали коментарът на @hadley е приложим и тук.

Създадох минимален работещ пример за R пакет, където тестването на отделен файл с testthat::test_file работи, но тестването пакетът с devtools::test не го прави.

Това е единственият R файл R/a.R на моя пакет:

#' @export
generate_data_table <- function() {
  data.table(a = 1:10, b = 11:20)
}

Ето моя тестов файл inst/tests/test-a.R:

test_that("everything is OK", {
  x <- generate_data_table()
  expect_equal(x[b == 11]$a, 1)
})

Този тест преминава, когато стартирам test_file, но когато стартирам devtools::test, получавам следната грешка:

> test()
Testing ttdt
Loading ttdt
1

1. Error: everything is OK -----------------------------------------------------
object 'b' not found
1: expect_equal(x[b == 11]$a, 1) at test-a.R:3
2: expect_that(object, equals(expected, label = expected.label, ...), info = info, label = label)
3: condition(object)
4: compare(expected, actual, ...)
5: compare.default(expected, actual, ...)
6: all.equal(x, y, ...)
7: all.equal.numeric(x, y, ...)
8: attr.all.equal(target, current, tolerance = tolerance, scale = scale, ...)
9: mode(current)
10: x[b == 11]
11: `[.data.table`(x, b == 11)
12: `[.data.frame`(x, i)

Това правилно поведение ли е или трябва да се счита за грешка в data.table или devtools?

Ето моята среда:

> sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.9.2 testthat_0.8.1   devtools_1.4.1  

loaded via a namespace (and not attached):
 [1] digest_0.6.4   evaluate_0.5.1 httr_0.2       memoise_0.1    parallel_3.0.2
 [6] plyr_1.8.1     Rcpp_0.11.0    RCurl_1.95-4.1 reshape2_1.2.2 stringr_0.6.2 
[11] tools_3.0.2    whisker_0.3-2 

Актуализация. Актуализирах зависимостите на пакета, за да зависят правилно от data.table тук, но проблемът все още съществува.


person Victor K.    schedule 03.03.2014    source източник
comment
Вижте Използване на пакет data.table в моя собствен пакет - Вие не декларират правилно зависимостите   -  person mnel    schedule 04.03.2014
comment
@mnel е правилен. Никъде нямате data.table, посочена като зависимост github.com/victorkryukov/ttdt /blob/master/DESCRIPTION   -  person Dason    schedule 04.03.2014
comment
@mnel - Съмнявам се, че зависимостта е проблемът. Зададох правилно зависимостите в github.com/victorkryukov/ttdt/commit/ и Все още наблюдавам този бъг.   -  person Victor K.    schedule 04.03.2014
comment
@Dason - вижте коментара ми по-горе.   -  person Victor K.    schedule 04.03.2014
comment
@ВикторК. - използвайте и fresh=TRUE... вижте отговора ми   -  person mnel    schedule 04.03.2014


Отговори (1)


Ако ти

  1. Задайте правилно зависимостите във файла DESCRIPTION
  2. Пусни test(fresh = TRUE)

Всичко трябва да работи.

Използването на fresh = TRUE ще гарантира, че тестовете се изпълняват в нова R сесия.

person mnel    schedule 04.03.2014