簡體   English   中英

如何在 R 中使用 testthat 測試錯誤和特定錯誤消息

[英]How to test for an error and specific error message using testthat in R

我正在嘗試編寫一個測試,以確保在給定某個輸入的情況下,一個函數

  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")

如何創建一個測試來檢查函數是否出錯並提供特定的錯誤消息?

不要使用管道運算符。 它應該可以工作,但會引發您遇到的錯誤。 至少測試版本 2.0.1。 如果我使用如下所示的無管道代碼,則測試通過。

test_that(
  "function errors when it receives a character object", 
  { expect_error(test_funct("a"), "non-numeric argument to binary operator") } 
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM