Я пытаюсь решить проблему с использованием модульных тестов с помощью testthat. Код работает нормально, если запускать вручную, однако кажется, что при запуске test()
рабочие внутри foreach, похоже, не имеют доступа к пакету или функциям внутри пакета, который я тестирую. Код довольно сложный, поэтому у меня нет отличного рабочего примера, но вот схема структуры:
модульный тест в тестах/testthat:
test_that("dataset runs successful", {
expect_snapshot_output(myFunc(dataset, params))
})
MyFunc вызывает другую функцию и внутри этой функции создает воркеров для запуска некоторого кода:
final_out <- foreach(i = 1:nrow(data),
.combine = c,
.export = c("func1", "func2", "params"),
.packages = c("fields", "dplyr")) %dopar% {
output = func1(stuff)
more = func2(stuff)
out = rbind(output, more)
return (out)
}
У рабочих, похоже, нет доступа к func1
, func2
и т. д.
Я пытался добавить имя пакета к пакетам в этой строке, но это тоже не работает.
Любые идеи? Как я уже упоминал, это проблема только при попытке запустить модульные тесты, и я подозреваю, что это как-то связано с тем, как загружается тестируемый пакет?