我想比较两个数组,但assert_equal
引发错误:
No visible difference in the Array#inspect output.
You should look at the implementation of #== on Array or its members.
这是我的测试:
describe Post do
before do
@draft = Post.new('test-draft', draft = true)
@post = Post.new('2014-10-31-test-post')
end
describe '.drafts' do
it 'returns an array of unpublished posts' do
actual = Post.drafts
assert_equal [@draft], actual
end
end
end
这是我的两个数组,它们的内容相同,但具有不同的内存位置。
[
[0] #<Post:0x0000000851a178 @file_name="test-draft", @draft=true>
]
[
[0] #<Post:0x0000000851a538 @file_name="test-draft", @draft=true>
]
如何比较我的两个阵列?
答案 0 :(得分:3)
听起来你的Post类没有自己的==
运算符,所以没有两个Post对象可以相等。我想你想给Post一些平等的想法。
答案 1 :(得分:1)
由于你想看看这些值是否正确,你可以实现一个类似帮助器的方法来实现像
这样的方法。a = [1,2,3]
b = [1,2,3]
((a - b) + (b - a)).empty?
#=> true
例如
def arrays_equal_values?(a, b)
((a - b) + (b - a)).empty?
end