对于expect_that单元测试,是否有多种方法可以进行预测?例如,对于给定的expect_that()
语句,我希望函数f()
发出警告并返回数字10
。
答案 0 :(得分:2)
test_that("f works as expected", {
expect_warning(f())
expect_equal(f(), 10)
}
)
如果我理解你的背景,这应该有效。测试将失败,并报告是否满足其中一个或两个期望。
要仅运行一次该函数,您可以尝试将该函数包装在test_that:
中 test_that("f works as expected", {
a <- tryCatch(f(), warning=function(w) return(list(f(), w)))
expect_equal(a[[2]], "warning text")
expect_equal(a[[1]], 10)
rm(a)
}
)
我还没有对此进行过测试,因此我不确定它是否适用于您的特定情况,但我过去曾使用类似的方法使用test_that。
答案 1 :(得分:1)
context("Checking blah")
test_that("blah works",{
f <- function(){warning("blah"); return(10)}
expect_warning(x <- f())
expect_equal(x, 10)
})
您可以在检查警告时保存输出。之后检查输出是否符合预期。