Проблема округления в тестах rspec при сравнении массивов с плавающей запятой

Есть метод, результат которого я хочу проверить:

 result.should  == [1.0,2.0,3.0]

Но я получаю сообщение об ошибке:

   expected: [1.0, 2.0, 3.0]
        got: [1.0, 2.0, 3.0] (using ==)

Думаю проблема в округлении, но не знаю как их сравнить, например с отклонением 0,1.

Спасибо, apneadiving. Я написал свой собственный сопоставитель, если он кому-то поможет:

RSpec::Matchers.define :be_closed_array do |expected, truth|
  match do |actual|
    same = 0
    for i in 0..actual.length-1
      same +=1 if actual[i].round(truth) == expected[i].round(truth)
    end
    same == actual.length
  end

  failure_message_for_should do |actual|
    "expected that #{actual} would be close to #{expected}"
  end

  failure_message_for_should_not do |actual|
    "expected that #{actual} would not be close to #{expected}"
  end

  description do
    "be a close to #{expected}"
  end
end
12
задан mskfisher 11 May 2012 в 16:08
поделиться