2014-03-03 26 views
0

我的問題類似於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.tabledevtools中的一個錯誤?

這裏是我的環境:

> 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.tablehere,但問題仍然存在。

+3

請參閱[在我自己的包中使用data.table包](http://stackoverflow.com/questions/10527072/using-data-table-package-inside-my-own-package) - 您沒有聲明依賴關係正確 – mnel

+2

@mnel是正確的。你沒有將data.table作爲依賴列出在任何地方https://github.com/victorkryukov/ttdt/blob/master/DESCRIPTION – Dason

+0

@mnel - 我懷疑依賴是問題。我在https://github.com/victorkryukov/ttdt/commit/755bf8a803abc57fe1480b78eaf1eb72da7633e3中正確設置了依賴關係,我仍然觀察到這個錯誤。 –

回答

3

如果

  1. DESCRIPTION文件
  2. 運行正確設置依賴性test(fresh = TRUE)

一切都應該工作。使用fresh = TRUE將確保測試在新的R會話中運行。

+0

謝謝。這解決了我的問題。 –