使用 testthat 时在 foreach 中加载包时出错

error loading package inside foreach when using testthat

我正在尝试调试将单元测试与 testthat 结合使用的问题。如果手动 运行,代码 运行 没问题,但是当 运行 宁 test() 时,foreach 中的工作人员似乎无法访问包或函数在我正在测试的包内。代码非常复杂,所以我没有很好的工作示例,但这里是结构的概要:

tests/testthat 中的单元测试:

test_that("dataset runs successful", {
  expect_snapshot_output(myFunc(dataset, params))
})

MyFunc 调用另一个 func,并在该 func 中创建工人 运行 一些代码:

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)
}

工作人员似乎无法访问 func1func2 等。

我尝试在这一行中将包的名称添加到 packages 中,但它也不起作用。

有什么想法吗? 正如我提到的,这只是尝试 运行 单元测试时的一个问题,我怀疑它与我正在测试的包的加载方式有某种关系?

当工作人员启动时,他们没有正常会话所拥有的全套软件包;当本地会话中的测试为 运行 时,将搜索路径中包的所有包名称传递给 .packages 参数。