Я испытываю некоторую непонятливость в rspec и rspec-rails 2.11.0. Я воспроизвел поведение в приложении коллеги, работающем под управлением 2.7.1 (оба на Ruby 1.9.3).
Эти тесты работают, как ожидалось (не работают):
it "should not change i" do
i = 0
expect {
i = 2
}.not_to change { i }
end
it "should not change i" do
i = 0
expect {
i = 2
}.not_to change { i }.from( 0 )
end
Сообщение об ошибке: «результат не должен был измениться, но изменился с 0 на 2» в обоих случаях.
Изменение «from» в ожидании на другое значение необъяснимо заставляет его пройти, а не потерпеть неудачу, независимо от того, что происходит со значением i в блоке ожидания:
it "should not change i" do
i = 0
expect {
i = 2
}.not_to change { i }.from( 1 )
end
Я только недавно обновился до 1.9.3 и могу сказать с некоторой уверенностью, что заметил бы такое поведение раньше, если бы испытывал его. Может ли кто-нибудь объяснить это и / или что я делаю не так?