我想使用 R 中testthat包中的expect_equal()來測驗一個函式,該函式從由 .分隔的字串中提取資訊。我還想測驗輸入字串為空時的情況。但是,在這種情況下,我沒有達到預期的平等(參見下面的代碼片段)。我收到錯誤“錯誤:不等于。組件“info2”:'is.NA'值不匹配:目標中的當前1中的0 “。如何解決這個問題?|
result
expected
library(stringr)
library(testthat)
# Function to be tested
fn_extract_info <- function(some_text) {
info1 <- unlist(
stringr::str_split(
some_text, "\\|"))[1]
info2 <- unlist(
stringr::str_split(
some_text, "\\|"))[2]
return(list(
info1 = info1,
info2 = info2
))
}
# Test function
fn_test_fn_extract_info <- function(some_text, expected) {
result <- fn_extract_info(some_text = some_text)
expect_equal(result, expected)
}
# Execution of test function with empty string
fn_test_fn_extract_info(
some_text = "",
expected = list(info1 = "",
info2 = "NA")
)
以空字串作為輸入的函式 fn_extract_info() 產生:
$info1
[1] ""
$info2
[1] NA
uj5u.com熱心網友回復:
請注意,"NA"
與 不一樣NA
。而且并非所有NA
的價值觀都是一樣的。如果您期望缺少字符值,則應該運行它
fn_test_fn_extract_info(
some_text = "",
expected = list(info1 = "",
info2 = NA_character_)
)
NA_character_
是NA
字符值的特殊型別版本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504751.html
上一篇:子模塊中的Rust單元測驗組織