rspec not_to changement de pas se comporter comme prévu

Je suis en train de vivre quelque déconcertant comportement dans rspec et rspec-rails 2.11.0. J'ai reproduit le comportement d'un co-travailleur de l'application qui s'exécute 2.7.1 (à la fois sur ruby 1.9.3)

Ces tests fonctionnent comme prévu (échoue):

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

Message d'erreur est "le résultat ne devrait pas avoir changé, mais a changé de 0 à 2" dans les deux cas

Changer le "de" dans l'attente d'une valeur différente inexplicablement fait passer, plutôt que de ne pas, peu importe ce qui se passe à la valeur de i dans le fait de s'attendre bloc:

it "should not change i" do
    i = 0
    expect {
        i = 2
    }.not_to change { i }.from( 1 )
end

J'ai récemment mis à niveau vers 1.9.3 et je peux dire avec certitude que je l'aurais remarqué ce comportement avant si j'avais connu. Quelqu'un peut-il expliquer ceci, et/ou ce que je fais mal?

OriginalL'auteur Johnny C | 2012-10-02