【发布时间】:2021-10-18 23:26:09
【问题描述】:
我正在为一个包编写单元测试,有一些测试我不希望测试在失败时抛出错误,而是给出警告。
这不是我真正的代码,但假设我想测试类似的东西:
add_x_y <- function(x, y) x + y
expect_equal( add_x_y(2, 2), 3 )
输出错误:
Error: add_x_y(2, 2) not equal to 3.
1/1 mismatches
[1] 4 - 3 == 1
是否有变体或替代函数会为此检查引发警告而不是错误?
【问题讨论】:
-
if (!isTRUE(all.equal(add_x_y(2,2), 3))) warning("abc")但大概您正在寻找惯用的东西/testthat-ish? -
这是一个不错的建议。你说得对,我希望有一些东西可以很好地替代
testthat中expect_函数的通常行为。 -
不确定特定于
testthat的解决方案,但您可以将测试包装在tryCatch()中以输出警告而不是错误 -tryCatch(expect_equal(add_x_y(2, 2), 3), error = function(e) warning(e))。 -
@27ϕ9 实际上效果很好。我认为就我的目的而言,使用您的建议并围绕
expect_equal()和朋友(例如expect_equal_or_warn <- function(...) tryCatch(expect_equal(...), function(e) warning(e)))进行包装会很好。您想将此作为答案提交吗? -
@bschneidr - 谢谢 - 完成。我用你的函数包装器作为答案,希望你不介意。