2013-04-02 24 views
5

test_that機能の内部でtextConnectionを使用すると、正常に機能しない理由は何ですか?テストの問題接続

つまり、私が直接、次のコードを実行すると、すべてが素晴らしい作品:

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 

答えて

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の文書をチェックしてください。

+0

+1私の(ほぼ完了した)レスポンスを削除してください(私のロジックが最初に 'textConnection'のドキュメントをチェックしましたが) – mnel

+0

それはトリックでした!ありがとう。 –