测试连接的问题

时间:2013-04-02 22:41:28

标签: r testthat

任何人都有任何想法为什么在textConnection函数中使用test_that无法正常运行?

即。如果我直接运行以下代码,一切都很好:

txt <- ""
con <- textConnection("txt", "w")  
writeLines("test data", con)
close(con)

expect_equal(txt, "test data")  #Works

然而,如果我将其嵌套在test_that函数内部,它就不起作用,我得到一个空的txt变量来expect_equal调用。

test_that("connection will work", {

  txt <- ""
  con <- textConnection("txt", "w")  
  writeLines("test data", con)
  close(con)

  expect_equal(txt, "test data")  
}) #Fails

会话信息

> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
  [1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

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

other attached packages:
  [1] testthat_0.7  RODProt_0.1.1 rjson_0.2.12 

loaded via a namespace (and not attached):
  [1] evaluate_0.4.2 plyr_1.8       stringr_0.6.1  tools_2.15.2 

1 个答案:

答案 0 :(得分:6)

试试这个:

test_that("connection will work", {

  txt <- ""
  con <- textConnection("txt", "w",local = TRUE)  
  writeLines("test data", con)
  close(con)
  expect_equal(txt, "test data")  
})

我从预感到那里,test_that评估单独环境中的代码的事实与问题有关,然后检查textConnection上的文档。