2013-04-02 46 views
5

Bất kỳ ai có ý tưởng nào về việc sử dụng textConnection bên trong một chức năng test_that sẽ không hoạt động đúng cách?Các vấn đề với kết nối testthat

ví dụ: Nếu tôi chạy đoạn mã sau trực tiếp, mọi thứ hoạt động tốt:

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

expect_equal(txt, "test data") #Works 

Trong khi đó nếu tôi làm tổ bên này của một hàm test_that, nó không hoạt động và tôi nhận được một biến txt rỗng đến các expect_equal gọi điện.

test_that("connection will work", { 

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

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

phiên Info

> 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 

Trả lời

6

Hãy thử điều này:

test_that("connection will work", { 

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

tôi đến đó từ linh cảm của tôi rằng thực tế là test_that đánh giá mã trong một môi trường riêng biệt được kết nối với các vấn đề và sau đó kiểm tra tài liệu trên textConnection.

+0

+ 1 xóa câu trả lời (gần như đã hoàn thành) của tôi (mặc dù logic của tôi đã kiểm tra tài liệu cho 'textConnection' trước) – mnel

+0

Điều đó đã làm được điều đó! Cảm ơn. –