Testthat в R: поиск в тестируемых файлах

Я использую пакет testthat в R, и я пытаюсь проверить функцию определенном в файле example.R. Этот файл содержит вызов source("../utilities/utilities.R"), где utilities.R - это файл с функциями, написанными мной. Однако, когда я пытаюсь проверить функцию из example.R, поиск ее в рамках тестирования script приводит к следующей ошибке:

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

Не могли бы вы пояснить, как запускать тесты для функций в файлах, которые отправляют другой файл?

Ответ 1

Может быть, немного поздно, но я нашел решение. Test_that устанавливает каталог, содержащий тестовый файл, в качестве текущего рабочего каталога. См. Код ниже из test-files.r. Это приводит к тому, что рабочий каталог будет /tests. Поэтому ваши основные сценарии должны быть источником ( "../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))
  }

Решение, которое я нашел, это добавить setwd ( ".." ) в свои тестовые файлы и просто указать имя файла без пути. source ( "file.R" ) вместо источника ( "../file.R" ). Кажется, работает для меня.

Ответ 2

Возможно, проверьте свое правописание? В вопросе вы используете как "утилиты", так и "утилиты".