11
Hay un método que resultan Quiero comprobar:problema de redondeo con las pruebas rspec al comparar las matrices de flotación
result.should == [1.0,2.0,3.0]
pero me da un error:
expected: [1.0, 2.0, 3.0]
got: [1.0, 2.0, 3.0] (using ==)
Creo que el problema de redondeo, pero no sé cómo compararlos, por ejemplo con una desviación de 0.1.
Gracias, apneadiving. escribí mi propia matcher, si ayudar a alguien:
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
Gracias, sé de estos métodos, pero no sé cómo aplicarlos a la matriz. ¿He iterado cada valor? Debido a que esta línea result.should be_close ([1.0,2.0,3.0], 0.1), no funciona. – zolter
Mmmm ... No sé. Es mejor que crees tu propio marcador, es bastante directo – apneadiving
Dado que RSpec 3 solo se implementa 'be_within': http://www.rubydoc.info/gems/rspec-expectations/3.1.0/RSpec/Matchers#be_within-instance_method vs http://www.rubydoc.info/gems/rspec-expectations/2.4.0/RSpec/Matchers#be_close-instance_method – Raf