如何在R中使用testthat测试错误和特定的错误消息

时间:2019-04-13 16:18:33

标签: r testthat

我正在尝试编写一个测试,以确保在给定输入的情况下,一个函数

  1. 错误
  2. 提供特定的错误消息

我正在使用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")

如何创建测试以检查功能错误并提供某些错误消息?

1 个答案:

答案 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") } 
)