Я пишу тесты для функции, которая при некоторых условиях будет генерировать предупреждения. Я хочу убедиться, что при других условиях он не выдает предупреждений. Я не вижу очевидного способа легко проверить это с помощью testthat
. Думаю, я мог бы сделать что-то вроде:
my.result <- 25
my.func <- function() my.result
expect_equal(
withCallingHandlers(
my.func(), warning=function() stop("A Warning!")
),
my.result
)
или используйте options(warn=2)
, но я надеялся, что будет что-то вроде:
expect_no_warnings(my.func())
Я упускаю что-то очевидное?
options(warning=2)
- person Ben Bolker   schedule 25.02.2014testthat
останавливает выполнение при ошибке вместо того, чтобы продолжать и сообщать о любых других неудачных тестах; 2. Я не могу придумать простой систематический механизм отмены этого, который переживет необработанные ошибки в блокеtest_that
. Обычно я бы сделалon.exit(options(warn=old.warn))
, но для этого мне пришлось бы обернуть функцию вокруг блокаtest_that
. Добавлениеoptions(warn=old.warn)
в конце не приведет к ошибке предупреждения, и мои параметры останутся измененными. - person BrodieG   schedule 25.02.2014