使用 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)
}
工作人员似乎无法访问 func1
、func2
等。
我尝试在这一行中将包的名称添加到 packages 中,但它也不起作用。
有什么想法吗?
正如我提到的,这只是尝试 运行 单元测试时的一个问题,我怀疑它与我正在测试的包的加载方式有某种关系?
当工作人员启动时,他们没有正常会话所拥有的全套软件包;当本地会话中的测试为 运行 时,将搜索路径中包的所有包名称传递给 .packages
参数。
我正在尝试调试将单元测试与 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)
}
工作人员似乎无法访问 func1
、func2
等。
我尝试在这一行中将包的名称添加到 packages 中,但它也不起作用。
有什么想法吗? 正如我提到的,这只是尝试 运行 单元测试时的一个问题,我怀疑它与我正在测试的包的加载方式有某种关系?
当工作人员启动时,他们没有正常会话所拥有的全套软件包;当本地会话中的测试为 运行 时,将搜索路径中包的所有包名称传递给 .packages
参数。