【发布时间】:2014-03-27 00:47:48
【问题描述】:
我正在为在某些情况下会生成警告的函数编写测试。我想确保在其他条件下它不会产生警告。我看不到用testthat 轻松测试它的明显方法。我想我可以这样做:
my.result <- 25
my.func <- function() my.result
expect_equal(
withCallingHandlers(
my.func(), warning=function() stop("A Warning!")
),
my.result
)
或使用options(warn=2),但我希望会有类似的东西:
expect_no_warnings(my.func())
我是否遗漏了一些明显的东西?
【问题讨论】:
-
我通过设置
options(warning=2)来做到这一点 -
@BenBolker,我对这种方法有两个问题,1.(我建议的另一个替代方法也有问题),
testthat出错时停止执行,而不是继续并报告任何其他失败的测试; 2. 我想不出一个简单的系统机制来撤销它,它可以在test_that块中保留未处理的错误。通常我会做on.exit(options(warn=old.warn)),但要做到这一点,我必须在test_that块周围包装一个函数。在最后添加options(warn=old.warn)不会出现警告失败,我的选项将被更改。