11
Jest to metoda, która skutkować Chcę sprawdzić:Zaokrąglanie problem z testów RSpec przy porównywaniu tablice pływaka
result.should == [1.0,2.0,3.0]
ale pojawia się błąd:
expected: [1.0, 2.0, 3.0]
got: [1.0, 2.0, 3.0] (using ==)
myślę, że problem zaokrąglania ale nie wiem, jak je porównać, na przykład z odchyleniem 0,1.
Dziękuję, bezdechu. pisałem własne dopasowywania, jeśli to pomoże ktoś:
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
Dziękuję, wiem o te metody, ale nie wiem, jak zastosować je do tablicy. Mam iterować każdą wartość? Ponieważ ten wynik wiersza.może be_close ([1,0,2.0,3.0], 0,1), nie działa. – zolter
Mmmm ... Nie wiem. Lepiej stwórz własny matcher, to całkiem proste – apneadiving
Ponieważ RSpec 3 jest zaimplementowane tylko '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