![](/img/trans.png)
[英]How to test for a message and an error message simultaneously in R testthat?
[英]How to test for an error and specific error message using testthat in R
我正在嘗試編寫一個測試,以確保在給定某個輸入的情況下,一個函數
我正在使用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.