Я хочу проверить в R, если функция
- возвращает правильное значение
- выдает правильное предупреждение во время вычисления
Для этого я создал воспроизводимый пример. Есть два сценария, первый (например, test-warning-and-result.R ) работает нормально и без ошибок:
library(testthat)
f <- function(x) {
if (x < 0) {
warning("*x* is already negative")
return(x)
}
-x
}
test_that("warning and result", {
x = f(-1)
expect_that(x, equals(-1))
expect_warning(f(-1), "already negative")
})
Однако, когда я запускаю тесты из внешний скрипт (например, run-test.R ), он логически выдает предупреждение в «x = f (-1)»
library(testthat)
test_dir(".")
Изображение результатов теста
Поскольку я знаю, что будет предупреждение, и проверяю его, я ищу способ пропустить предупреждение в test_that () из отчета о тестировании. В идеале, мне не пришлось бы запускать функцию дважды, но в одном тесте.
Любые идеи приветствуются