`test_that`里面的`expect_error`不起作用

时间:2015-10-05 14:03:52

标签: r testthat

如果我运行以下操作,则会出现行为。什么都没有归还

expect_error(expect_true(FALSE))

当我运行相同的代码,但包含在test_that

中时
test_that("expect_error should not fail",{
        expect_error(expect_true(FALSE))
})

Error: Test failed: 'expect_error should not fail'
* Not expected: FALSE isn't true.
* Not expected: expect_true(FALSE) code did not generate an error.

输出很奇怪,意味着expect_true(FALSE)test_that内展开时不会产生错误。

如何将expect_error放入test_that

更新

我使用testthat进行代码断言。有assertthat包。

1 个答案:

答案 0 :(得分:1)

你误解了expect_error的意图。它应该捕获用户代码中的错误,而不是测试中的错误。

expect_that会产生错误,但在<{em> test_that有机会对其进

请勿在{{1​​}}内包含expect_error次来电。直接使用expect_*

expect_error

行为的不一致来自expect_error将捕获test_that('expect_error catches error conditions', { expect_error(stop('foo')) }) 生成的错误而不是让它们正常传播的事实。