我正在尝试编写一个测试,以确保在给定输入的情况下,一个函数
我正在使用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")
如何创建测试以检查功能错误并提供某些错误消息?
答案 0 :(得分:1)
不要使用管道运算符。它应该可以工作,但是会引发错误。至少使用testthat版本2.0.1。如果我使用如下所示的none管道代码,则测试通过。
test_that(
"function errors when it receives a character object",
{ expect_error(test_funct("a"), "non-numeric argument to binary operator") }
)