R测试:如何忽略预期结果中的类(错误"类不同")

时间:2017-07-23 16:33:03

标签: r unit-testing testthat

如何忽略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

1 个答案:

答案 0 :(得分:1)

你不能忽略类,所以必须处理代码中的差异。 正如评论中所建议的那样,unclass()就足够了。

对于切换attirbutes,类被独立于属性进行检查,因此您无法使用check.attributes参数将其切换。

此外,切换值顺序时的有趣行为来自内部方法调度:当compare.default值为第一个时它使用myclass而第一个字符向量时使用compare.character