问题描述
我想了解 setup()
第 3 版中 teardown()
和 testthat
的当前替代品是什么。我发现 this blog post 中有人讨论过 setup()
和 teardown()
已被弃用,以支持测试修正。
我检查了那个帖子和另一个推荐的帖子(即this one),
并且建议使用 withr::defer()
。但是,我不完全明白。
假设我进行了两个简单的测试。每个测试都依赖于获取一些外部资源,然后执行检查。
# First test.
test_that("..." {
# Super long process to get this data.
data <- matrix(rnorm(9),3,3)
# My test.
expect_equal(nrow(data),3)
})
# Second test.
test_that("..." {
# Super long process to get this data.
data <- matrix(rnorm(9),3)
# My test.
expect_equal(ncol(data),3)
})
通常,我会使用 setup()
执行生成 data
对象的密集过程,并确保该对象可用于该文件中的所有测试。像这样:
setup({
# Super long process to get this data.
data <- matrix(rnorm(9),3)
})
然后,我会继续我的测试。
# First test.
test_that("..." {
expect_equal(nrow(data),3)
})
# Second test.
test_that("..." {
expect_equal(ncol(data),3)
})
为了这个问题,让我们假设我不能将这两个测试压缩在一起。
如何使用 withr::defer()
实现与上述 setup()
相同的行为?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)