gpt4 book ai didi

r - testthat:一次期望错误和变量值?

转载 作者:行者123 更新时间:2023-11-28 20:28:37 26 4
gpt4 key购买 nike

我想测试一个可以抛出错误的函数,但我也想确保变量值是正确的(以验证错误发生前的预期最后状态 - 所以我想测试不需要的副作用)。可以这样做吗?

要测试的简化表达式

x <- 1    # could also be made "global" by "<<-"
stop("damn, an error occured")

我怎样才能做类似的事情

testthat("double check",
expect_error_and_TRUE( x == 1, {
x <- 1
stop("damn, an error occured")
}))

我找不到一种方法来“堆叠”(管道)expect 函数?

最佳答案

如果函数 返回一个值,它不会抛出错误,否则会舍入。如果愿意,您可以在 expect_error 中测试特定字符串,这样您就可以在错误中设置 x 的值。

{
x <- 1
stop("damn, an error occured")
}
## Error: damn, an error occured
x
## [1] 1
rm(x)
f <- function(){
x <- 1
stop("damn, an error occured")
}
f() == 1
## Error in f() : damn, an error occured
expect_error(f(), "damn, an error occured")

f <- function(){
x <- 1
stop("damn, an error occured, x is ", x)
}
expect_error(f(), "x is 1")

我建议不要在函数外测试代码,因为它取决于环境和运行位置,因此如果您在测试文件中运行它,它可能与代码的“主要”部分不同

关于r - testthat:一次期望错误和变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40579637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com