Rspec测试期望内存值是相同的?



我有这个Rspec测试是失败的,我不明白如何解决它。

似乎错误是因为它们是对象的不同实例,所以它们得到了不同的内存值。

我怎么能维持一个内存值对象时,创建一个对象,将行为在相同的方式,如果给定相同的输入?

describe '#==' do
let(:cpf) {described_class.new('01201201202')}
it 'verifies the key equality' do
expect(cpf).to eq described_class.new('01201201202')

错误:

1) PixKey#== verifies the key equality
Failure/Error: expect(cpf).to eq described_class.new('01201201202')
expected: #<PixKey:0x0000018d191b8670 @value="01201201202", @key="01201201202", @type="cpf">
got: #<PixKey:0x0000018d191b8b70 @value="01201201202", @key="01201201202", @type="cpf">
(compared using ==)
Diff:
@@ -1,4 +1,4 @@
-#<PixKey:0x0000018d191b8670
+#<PixKey:0x0000018d191b8b70
@key="01201201202",
@type="cpf",
@value="01201201202">

有什么主意都可以。

当两个对象引用相同的哈希键时,==方法的默认行为返回true。因为在您的示例中,两个元素是不同的实例,因此它们的哈希值将不同。

如果你想让两个PixKey的实例被认为是相等的,如果他们有相同的@value和/或@key,那么你需要用你自己的实现覆盖默认实现,例如:

# in your `PixKey` class
def ==(other)
self.class == other.class && @key == other.key && @value == other.value
end

最新更新