私はそのrspecテストを持っています
let(:document) { Document.new }
let(:residue) { Residue.new }
describe "inner_residue=" do
before do
document.producer_residue = residue
end
it 'dont changes the producer residue' do
expect { document.inner_residue = residue }.to_not change(document, :producer_residue)
end
end
次のエラーが出力されます。
producer_residue should not have changed, but did change from #<Residue id: nil, un_code: nil, description: "res", created_at: ... > to #<Residue id: nil, un_code: nil, description: "res", created_at: ... >
ご覧のとおり、同じ残留物があります。メソッドはより複雑ですが、これも失敗する単純化です。
def inner_residue=(other)
return self.producer_residue = self.addressee_residue = nil unless other
self.producer_residue = producer_residue
end
それで… なんだ?
それ自体の残基を変更すると、アサーションが失敗しますか? ==、===、eq? で同じ残基かどうかを確認しました。常に真です。これの何が悪いのか理解できません。
rspec 1.3 を使用しています (Rails 2.3 アプリです。rspec2 にアップグレードできません)。