如何忽略testthat
单元测试中的class属性?
目前测试由于不同的类而失败:
library(testthat)
testthat("drinks taste good", {
values <- c("COFFEE", "TEA", "SOFT DRINK")
expected.values <- values
class(values) <- "myclass"
expect_equal(values, expected.values, check.attributes = FALSE)
# Error: `values` not equal to `expected.values`.
# target is myclass, current is character
# funny: Try it with switched variables causes a different error message
expect_equal(expected.values, values, check.attributes = FALSE)
# Error: `expected.values` not equal to `values`.
# Classes differ: character vs myclass
})
编辑1:expect_equivalent(values, expected.values)
既不会工作,也不会忽略属性,但不类(通过check.attributes = FALSE
):
Error: `values` not equivalent to `expected.values`.
target is myclass, current is character
答案 0 :(得分:1)
你不能忽略类,所以必须处理代码中的差异。
正如评论中所建议的那样,unclass()
就足够了。
对于切换attirbutes,类被独立于属性进行检查,因此您无法使用check.attributes
参数将其切换。
此外,切换值顺序时的有趣行为来自内部方法调度:当compare.default
值为第一个时它使用myclass
而第一个字符向量时使用compare.character