【问题标题】:testthat: handling both warning and valuetestthat:同时处理警告和值
【发布时间】:2014-01-20 01:43:37
【问题描述】:

处理生成警告但又返回值的调用的最佳方法是什么?

例如

> require(testthat)
> expect_warning(log(-1))
> expect_equal(log(-1), NaN)
Warning message:
In log(-1) : NaNs produced

我想编写测试,以便对 log(-1) 的调用应该 (a) 生成警告和 (b) 返回值 NaN。上面的方法有效,但看到底部的“警告信息:”可能会让人们感到困惑。我应该暂时禁止警告吗?

【问题讨论】:

    标签: r testthat


    【解决方案1】:
    require(testthat)
    expect_warning(val <- log(-1))
    expect_true(is.nan(val))
    

    【讨论】:

    • 我知道最后一行确实有效,但感觉比expect_true(is.nan(val)) 稍微干净一些。 expect_equal(val, NaN) 传递依赖于 all.equal(NaN, NaN) 为真,这是一个可疑的设计决策。
    • @RichieCotton 或者 expect_identical(val, NaN) 似乎更安全一些
    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 2021-06-07
    • 2012-09-09
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2012-01-14
    相关资源
    最近更新 更多