私は次の機能を持っています:
fun = function(expr) {
mc = match.call()
env = as.environment(within(
list(),
expr = eval(mc$expr)
))
return(env)
}
これは 内で呼び出され、 内のtryCatch()エラー条件exprが適切に処理されるようにします。
標準のエラー状態で正常に動作します。
tryCatch({
fun({
stop('error')
})
}, error = function(e) {
message('error happened')
})
# error happened
ただし、期待エラーをキャプチャしませんtestthat(これは、私の特定のユース ケースに適しています)。
library(testthat)
tryCatch({
fun({
expect_true(FALSE)
})
}, error = function(e) {
message('expectation not met')
})
# Error: FALSE isn't true.
またはもっと簡単に:
library(testthat)
tryCatch({
expect_true(FALSE)
}, error = function(e) {
message('expectation not met')
})
# Error: FALSE isn't true.
予期エラーはキャッチされません。
この問題は、R 3.2.2 から R 3.3.0 にアップグレードした後に発生しました。つまり、期待エラーは R 3.2.2 で正確に検出されました。
R 3.3.0 にtestthat期待を寄せる方法はありますか?tryCatch()