我使用test_that进行单元测试,并试图比较两个对象。在某些情况下,无论内容如何,似乎这两个对象都不会相同(expect_identical
),但如果它们属于同一类别,则可以相等(expect_equal
)。我确信它与这个类是如何构建的(我正在使用R.oo)如何重塑S3对象以使其具有可比性?
那么......是否有可能重塑/变平/重构一个对象(可能到列表中)?原始数据是否被提取,从而使两个对象具有可比性?我意识到这可能是一个不可能完成的任务。我对R的环境知之甚少,无法确定。
编辑
下面是一个例子:
library(R.oo)
library(testthat)
setConstructorS3("MyClass" , function()
{
extend(Object() , "MyClass" ,
.param1 = rnorm(10)
)
})
test1 = MyClass()
test2 = MyClass()
expect_identical(test1, test2) # error: Objects equal but not identical
expect_equal(test1, test2) # no error reported
我不熟悉test_that,但问题是可能是由精度引起的(是否有'expect_identical'的宽容类型参数?)或不同的属性(是否有'expect_equal_attributes'?)。 –
你可以发布两个这样的对象的例子吗? – Andrie
Andrie - 我发布了一个例子 – SFun28