我的問題類似於r devtools test() errors but testthat test_file() works,但我不確定@ hadley的評論是否也適用於此處。test_file()工作,但test()失敗data.table
我創建了一個R package的最小工作實例,其中有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
here,但問題仍然存在。
請參閱[在我自己的包中使用data.table包](http://stackoverflow.com/questions/10527072/using-data-table-package-inside-my-own-package) - 您沒有聲明依賴關係正確 – mnel
@mnel是正確的。你沒有將data.table作爲依賴列出在任何地方https://github.com/victorkryukov/ttdt/blob/master/DESCRIPTION – Dason
@mnel - 我懷疑依賴是問題。我在https://github.com/victorkryukov/ttdt/commit/755bf8a803abc57fe1480b78eaf1eb72da7633e3中正確設置了依賴關係,我仍然觀察到這個錯誤。 –