繁体   English   中英

对test_that的多重期望

[英]Multiple expectations with test_that

有没有一种方法可以对期望单元测试有多个期望? 例如,对于给定的expect_that()语句,我希望函数f()给出警告并返回数字10

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中使用了类似的方法。

context("Checking blah")

test_that("blah works",{
    f <- function(){warning("blah"); return(10)}
    expect_warning(x <- f())
    expect_equal(x, 10)
})

您可以在检查警告时保存输出。 之后,检查输出是否符合您的期望。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM