You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R包testthat中expect_equal的ignore_attr失效,如何忽略属性测试?

testthat忽略属性测试的稳定方案

你遇到的expect_equal(ignore_attr = TRUE)失效问题,不需要修改测试让属性匹配,以下是两种当前稳定推荐的解决方法:

方法1:精确忽略指定属性

如果只需要跳过dimnames校验,保留其他属性(比如dim)的检查,直接在expect_equal中用ignore参数指定要忽略的属性名:

library(testthat)
x <- structure(c("2", "0", "1", "2"), dim = c(2L, 2L), dimnames = list(
  c("1", "5"), c("m1", "m4")))
y <- structure(c("2", "0", "1", "2"), dim = c(2L, 2L))

expect_equal(x, y, ignore = "dimnames")

方法2:完全忽略所有属性

如果不需要校验任何属性,只比较原始数据内容,可以用unclass()移除对象的所有属性后再比较:

expect_equal(unclass(x), unclass(y))

关于原方法失效的说明

ignore_attr = TRUE是waldo::compare的参数,理论上expect_equal会传递该参数,但部分testthat版本存在参数传递兼容问题,导致该参数未生效。上述两种方法避开了这个问题,更稳定可靠。

内容的提问来源于stack exchange,提问作者nya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:10:04