在下面的示例中,actual向量缺少两个元素:OH1PA-PPL2.有没有办法获得比expect_equal()提供的更有用的输出呢?我想知道actual件商品中有哪些遗漏了,而不仅仅是计数不同.

library(testthat)

test_that(
  'files are named correctly',
  {
    expected <- c(AMEREN1 = "AMEREN24.01.15_March-1_DM_RL.pdf", COMED1 = "COMED24.01.15_March-1_DM_RL.pdf", 
                  `MD-OTH1` = "MD-OTH24.01.15_March_DM_RL.pdf", MD1 = "MD24.01.15_March_DM_RL.pdf", 
                  NJ1 = "NJ24.01.15_March_DM_RL.pdf", OH1 = "OH24.01.15_March_DM_RL.pdf", 
                  PA1 = "PA24.01.15_March_DM_RL.pdf", AMEREN2 = "AMEREN24.01.15_March-2_DM_RL.pdf", 
                  COMED2 = "COMED24.01.15_March-2_DM_RL.pdf", `PA-DUQ2` = "PA24.01.15_March-DUQ_DM_RL.pdf", 
                  `PA-METED2` = "PA24.01.15_March-METED_DM_RL.pdf", `PA-PECO2` = "PA24.01.15_March-PECO_DM_RL.pdf", 
                  `PA-PENELEC2` = "PA24.01.15_March-PENELEC_DM_RL.pdf", `PA-PENN2` = "PA24.01.15_March-PENN_DM_RL.pdf", 
                  `PA-PPL2` = "PA24.01.15_March-PPL_DM_RL.pdf", `PA-WPP2` = "PA24.01.15_March-WPP_DM_RL.pdf"
    )
    actual <- c(AMEREN1 = "AMEREN24.01.15_March-1_DM_RL.pdf", COMED1 = "COMED24.01.15_March-1_DM_RL.pdf", 
                `MD-OTH1` = "MD-OTH24.01.15_March_DM_RL.pdf", MD1 = "MD24.01.15_March_DM_RL.pdf", 
                NJ1 = "NJ24.01.15_March_DM_RL.pdf", PA1 = "PA24.01.15_March_DM_RL.pdf", 
                AMEREN2 = "AMEREN24.01.15_March-2_DM_RL.pdf", COMED2 = "COMED24.01.15_March-2_DM_RL.pdf", 
                `PA-DUQ2` = "PA24.01.15_March-DUQ_DM_RL.pdf", `PA-METED2` = "PA24.01.15_March-METED_DM_RL.pdf", 
                `PA-PECO2` = "PA24.01.15_March-PECO_DM_RL.pdf", `PA-PENELEC2` = "PA24.01.15_March-PENELEC_DM_RL.pdf", 
                `PA-PENN2` = "PA24.01.15_March-PENN_DM_RL.pdf", `PA-WPP2` = "PA24.01.15_March-WPP_DM_RL.pdf"
    )
    
    expect_equal(
      actual,
      expected
    )
  }
)
#> -- Failure ('<text>:24'): files are named correctly ----------------------------
#> `actual` not equal to `expected`.
#> Lengths differ: 14 is not 16
#> Error in `reporter$stop_if_needed()`:
#> ! Test failed
#> Backtrace:
#>      x
#>   1. \-testthat::test_that(...)
#>   2.   \-withr (local) `<fn>`(`<env>`)
#>   3.     +-base::tryCatch(...)
#>   4.     | \-base (local) tryCatchList(expr, classes, parentenv, handlers)
#>   5.     |   \-base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]])
#>   6.     |     \-base (local) doTryCatch(return(expr), name, parentenv, handler)
#>   7.     \-base::eval(handler$expr, handler$envir)
#>   8.       \-base::eval(handler$expr, handler$envir)
#>   9.         \-reporter$stop_if_needed()
#>  10.           \-rlang::abort("Test failed")

创建于2023-12-26,共reprex v2.0.2

推荐答案

{testthat}第三版中,expect_equal()waldo::compare()进行了比较,这将提供更多细节.您可能使用的是{testthat}第二版,而expect_equal()使用的是all.equal().

您可以使用以下命令临时切换到此测试的第3版:

testthat::local_edition(3)

或者如所描述的here全局地激活它.

带着重述:

library(testthat)

test_that(
  'files are named correctly',
  {
    local_edition(3)
    expected <- c(AMEREN1 = "AMEREN24.01.15_March-1_DM_RL.pdf", COMED1 = "COMED24.01.15_March-1_DM_RL.pdf", 
                  `MD-OTH1` = "MD-OTH24.01.15_March_DM_RL.pdf", MD1 = "MD24.01.15_March_DM_RL.pdf", 
                  NJ1 = "NJ24.01.15_March_DM_RL.pdf", OH1 = "OH24.01.15_March_DM_RL.pdf", 
                  PA1 = "PA24.01.15_March_DM_RL.pdf", AMEREN2 = "AMEREN24.01.15_March-2_DM_RL.pdf", 
                  COMED2 = "COMED24.01.15_March-2_DM_RL.pdf", `PA-DUQ2` = "PA24.01.15_March-DUQ_DM_RL.pdf", 
                  `PA-METED2` = "PA24.01.15_March-METED_DM_RL.pdf", `PA-PECO2` = "PA24.01.15_March-PECO_DM_RL.pdf", 
                  `PA-PENELEC2` = "PA24.01.15_March-PENELEC_DM_RL.pdf", `PA-PENN2` = "PA24.01.15_March-PENN_DM_RL.pdf", 
                  `PA-PPL2` = "PA24.01.15_March-PPL_DM_RL.pdf", `PA-WPP2` = "PA24.01.15_March-WPP_DM_RL.pdf"
    )
    actual <- c(AMEREN1 = "AMEREN24.01.15_March-1_DM_RL.pdf", COMED1 = "COMED24.01.15_March-1_DM_RL.pdf", 
                `MD-OTH1` = "MD-OTH24.01.15_March_DM_RL.pdf", MD1 = "MD24.01.15_March_DM_RL.pdf", 
                NJ1 = "NJ24.01.15_March_DM_RL.pdf", PA1 = "PA24.01.15_March_DM_RL.pdf", 
                AMEREN2 = "AMEREN24.01.15_March-2_DM_RL.pdf", COMED2 = "COMED24.01.15_March-2_DM_RL.pdf", 
                `PA-DUQ2` = "PA24.01.15_March-DUQ_DM_RL.pdf", `PA-METED2` = "PA24.01.15_March-METED_DM_RL.pdf", 
                `PA-PECO2` = "PA24.01.15_March-PECO_DM_RL.pdf", `PA-PENELEC2` = "PA24.01.15_March-PENELEC_DM_RL.pdf", 
                `PA-PENN2` = "PA24.01.15_March-PENN_DM_RL.pdf", `PA-WPP2` = "PA24.01.15_March-WPP_DM_RL.pdf"
    )
    
    expect_equal(
      actual,
      expected
    )
  }
)
#> ── Failure: files are named correctly ──────────────────────────────────────────
#> `actual` (`actual`) not equal to `expected` (`expected`).
#> 
#>      names(actual) | names(expected)               
#>  [3] "MD-OTH1"     | "MD-OTH1"       [3]           
#>  [4] "MD1"         | "MD1"           [4]           
#>  [5] "NJ1"         | "NJ1"           [5]           
#>  [6] "PA1"         - "OH1"           [6]           
#>  [7] "AMEREN2"     - "PA1"           [7]           
#>  [8] "COMED2"      - "AMEREN2"       [8]           
#>  [9] "PA-DUQ2"     - "COMED2"        [9]           
#> [10] "PA-METED2"   - "PA-DUQ2"       [10]          
#> [11] "PA-PECO2"    - "PA-METED2"     [11]          
#> [12] "PA-PENELEC2" - "PA-PECO2"      [12]          
#>  ... ...             ...             and 4 more ...
#> 
#> actual[3:14] vs expected[3:16]
#>   MD-OTH1"MD-OTH24.01.15_March_DM_RL.pdf"
#>   MD1"MD24.01.15_March_DM_RL.pdf"
#>   NJ1"NJ24.01.15_March_DM_RL.pdf"
#> - PA1"PA24.01.15_March_DM_RL.pdf"
#> + OH1"OH24.01.15_March_DM_RL.pdf"
#> - AMEREN2"AMEREN24.01.15_March-2_DM_RL.pdf"
#> + PA1"PA24.01.15_March_DM_RL.pdf"
#> - COMED2"COMED24.01.15_March-2_DM_RL.pdf"
#> + AMEREN2"AMEREN24.01.15_March-2_DM_RL.pdf"
#> - PA-DUQ2"PA24.01.15_March-DUQ_DM_RL.pdf"
#> + COMED2"COMED24.01.15_March-2_DM_RL.pdf"
#> - PA-METED2"PA24.01.15_March-METED_DM_RL.pdf"
#> + PA-DUQ2"PA24.01.15_March-DUQ_DM_RL.pdf"
#> - PA-PECO2"PA24.01.15_March-PECO_DM_RL.pdf"
#> + PA-METED2"PA24.01.15_March-METED_DM_RL.pdf"
#> - PA-PENELEC2"PA24.01.15_March-PENELEC_DM_RL.pdf"
#> + PA-PECO2"PA24.01.15_March-PECO_DM_RL.pdf"
#> and 4 more ...
#> Error:
#> ! Test failed
#> Backtrace:
#>      ▆
#>   1. └─testthat::test_that(...)
#>   2.   └─withr (local) `<fn>`(`<env>`)
#>   3.     ├─base::tryCatch(...)
#>   4.     │ └─base (local) tryCatchList(expr, classes, parentenv, handlers)
#>   5.     │   └─base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]])
#>   6.     │     └─base (local) doTryCatch(return(expr), name, parentenv, handler)
#>   7.     └─base::eval(handler$expr, handler$envir)
#>   8.       └─base::eval(handler$expr, handler$envir)
#>   9.         └─reporter$stop_if_needed()
#>  10.           └─rlang::abort("Test failed", call = NULL)

创建于2023-12-26,共reprex v2.0.2

R相关问答推荐

从具有随机模式的字符串中提取值

跨列应用多个摘要函数:summerise_all:列表对象无法强制为double类型'

在通过最大似然估计将ODE模型与数据匹配时,为什么要匹配实际参数的转换值?

带有叠加饼图系列的Highmap

如何利用模型函数在格图中添加双曲/指数曲线

ggplot的轴标签保存在officer中时被剪切

计算时间段的ECDF(R)

将饼图插入条形图

R中边际效应包中Logistic回归的交互作用风险比

R-按最接近午夜的时间进行筛选

在多页PDF中以特定布局排列的绘图列表不起作用

KM估计的差异:SvyKm与带权重的调查

Conditional documentr::R中数据帧的summarize()

创建新列,其中S列的值取决于该行S值是否与其他行冗余

用满足特定列匹配的另一行替换NA行

ArrangeGrob()和类似的替代方法不接受Grob列表.在Grid.Draw,返回:glist中的错误(...):仅允许在glist";中使用Grobs;

R-使用stri_trans_General()将其音译为德语字母

附加中缀操作符

如何在R中添加标识连续日期的新列

如何根据每个子框架中分类因子的唯一计数来过滤子框架列表?