有没有办法让一个 expect_that 单元测试有多个预期?例如,对于给定的expect_that()
语句,我希望该函数f()
给出警告并返回 number 10
。
问问题
925 次
2 回答
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 中使用过类似的方法。
于 2014-04-30T19:48:06.590 回答
2
context("Checking blah")
test_that("blah works",{
f <- function(){warning("blah"); return(10)}
expect_warning(x <- f())
expect_equal(x, 10)
})
您可以在检查警告时保存输出。之后检查输出是否符合您的预期。
于 2014-04-30T20:25:48.980 回答