例えばこんなspecを書いていたとする.
(ちなみに雰囲気で書いたので色々と足りなかったりするがお察しいただけると幸いです)
it '名前が更新される' do
put path, params: { name: 'new_name!' }
expect(user.name).not_to eq 'old_name'
end
これだといくら実装が正しくてもテストは通らない.
なぜなら,DBの値が更新されてもすでに読み込まれた user
インスタンスの値は更新されないからだ.
インスタンスの値を更新するには user.reload
とすればよい.
これを用いると上の例は次のように修正できる.
it '名前が更新される' do
put path, params: { name: 'new_name!' }
expect(user.reload.name).not_to eq 'old_name'
end