Я пытаюсь написать тест, который гарантирует, что при заданном входе функция
- ошибка
- предоставляет конкретное сообщение об ошибке
Я использую testthat::expect_error()
Пример
В качестве очень простого воспроизводимого примера предположим, что у нас есть функция умножения
test_funct <- function(x) { x * 2 }
И очень простой тест для проверки ошибок при вводе символа класса:
test_that(
"function errors when it receives a character object",
{ test_funct("a") %>% expect_error("non-numeric argument to binary operator") }
)
проблема
Я ожидал, что этот тест пройдёт, поскольку "a"
имеет символ класса и действительно выдаст сообщение об ошибке, предоставленное expect_error()
(то есть "non-numeric argument to binary operator"
).
Однако тест не проходит, вместо этого возвращается:
Error: Test failed: 'function errors when it receives a character object'
* non-numeric argument to binary operator
1: test_funct("a") %>% expect_error("non-numeric argument to binary operator")
2: eval(lhs, parent, parent)
3: eval(lhs, parent, parent)
4: test_funct("a")
Как создать тест, который проверяет наличие ошибок в функции и выдает определенное сообщение об ошибке?