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" を別の値に変更すると、expect ブロックの i の値に何が起こっても失敗するのではなく、不可解に合格になります。
it "should not change i" do
i = 0
expect {
i = 2
}.not_to change { i }.from( 1 )
end
私は最近 1.9.3 にアップグレードしたばかりですが、この動作を経験していれば、以前にこの動作に気付いていたと確信を持って言えます。誰かがこれおよび/または私が間違っていることを説明できますか?