2014-07-18 37 views
12

testthat R paketini kullanıyorum ve example.R dosyada tanımlı işlevini test etmeye çalışıyorum. Bu dosya, source("../utilities/utilities.R") numaralı bir aramayı içerir; burada utilities.R, tarafımdan yazılan işlevlere sahip bir dosyadır. Ancak, ben test komut dosyası içinde onu kaynak, example.R bir işlevi sınamak için çalışıyorum verir aşağıdaki hata:R: test kaynaklarında test ediliyor:

Error in file(filename, "r", encoding = encoding) : 
    cannot open the connection 
In addition: Warning message: 
In file(filename, "r", encoding = encoding) : 
    cannot open file '../utilities/utilities.R': No such file or directory 

nasıl başka bir dosya kaynak dosyalarda işlevleri için testler açıklayabilir misiniz?

+0

Bu dosyayı aynı klasöre koymayı denediniz mi? – Andrie

+0

Dosyayı aynı dizine koyup 'source ("utilities.R") olarak çevirmek "example.R" yardımcı değil: Benzer bir hata iletisi alıyorum. – paljenczy

cevap

8

Biraz geç olabilir, ama bir çözüm buldum. Test_that, test dosyasını geçerli çalışma dizini olarak tutan dizini ayarlar. Test-files.r'den aşağıdaki kodlara bakın. Bu, çalışma dizininin/testlerinin yapılmasına neden olur. Bu nedenle, ana komut dosyalarınızın test etmek için çalışan, ancak uygulamanızı çalıştırmamak için kaynak oluşturması gerekir ("../file.R").

https://github.com/hadley/testthat/blob/master/R/test-files.r

source_dir <- function(path, pattern = "\\.[rR]$", env = test_env(), 
         chdir = TRUE) { 
    files <- normalizePath(sort(dir(path, pattern, full.names = TRUE))) 
    if (chdir) { 
    old <- setwd(path) 
    on.exit(setwd(old)) 
    } 

buldum çözümü benim test dosyalarında ("..") setwd ekleyebilir ve yol olmadan dosya adını kaynak oldu. Kaynak ("../ file.R") yerine kaynak ("file.R"). Benim için iş gibi görünüyor.

+0

Testlerim, verilerim ve işlevlerim ayrı klasörlerde olduğundan, çalışma dizinini wd <- file.path (getwd(), '..') olarak atamam gerektiğini ve sonra bir functions_dir <- belirteceğini buldum. bir yardımcı dosya içinde file.path (wd, 'functions') ve data_dir <- file.path (wd, 'data'). Her bir test dosyası, fonksiyonlarını ve verilerini kaynaklamak için bu değişkenlere erişebilir. – Todd

1

Yazımınızı kontrol edebilir misiniz? Soruda hem "kullananlar" hem de "yardımcı programlar" kullanırsınız.