0
我有以下Rspec的測試:使用RSpec期望比較哈希
it 'creates an initial version with all the versionable attributes' do
resource = create(:versionable_resource)
version_attributes = resource.initial_version.new_attributes.sort
expect(version_attributes).to eq(resource.versionable_attributes.sort)
end
兩個version_attributes
和resource.versionable_attributes
的哈希值。他們有完全相同的內容。
expected: [["r_boolean", true], ["r_date", Sun, 26 Jan 2014], ["r_datetime", Sun, 26 Jan 2014 23:00:56 UTC +00:00], ["r_float", 3.14], ["r_integer", 3], ["r_string", "my string"], ["r_text", "my text"], ["r_time", 2014-01-26 17:00:56 -0600]]
got: [["r_boolean", true], ["r_date", Sun, 26 Jan 2014], ["r_datetime", Sun, 26 Jan 2014 23:00:56 UTC +00:00], ["r_float", 3.14], ["r_integer", 3], ["r_string", "my string"], ["r_text", "my text"], ["r_time", 2014-01-26 17:00:56 -0600]]
(compared using ==)
正如你所看到的,內容是相同的:然而,eq
語句與失敗。爲什麼這是失敗的?我應該使用與eq
不同的匹配嗎?我也嘗試過eql
和equal
,並且都以同樣的方式失敗。
解釋不幸的是,它看起來像你是對的。當我從比較中刪除時間和日期時,它按預期工作。你碰巧知道你是否可以從Ruby時間對象中刪除納秒? – nullnullnull
我不知道如何從Ruby時間對象中移除納秒,但您可以通過調用'change(nsec:0)'來創建一個0納秒的新對象。 –