RSpecでわからないことがあります。
before
でデータを作成する際に
title
を上書きしたデータを作成したのですが
describe "GET /hoge/:id" do before do @hoge = create(:hoge, title: 'title') end it "res code 200" do get "/hoge/" + @hoge[:id].to_s expect(response.status).to eq 200 json = JSON.parse(response.body) expect(@hoge.title).to eq json['hoge'] end end
デバッガーで確認したところ
返ってきたjsonのデータが指定した属性の部分とは違っていました。
@hoge
の中身は想定したデータができていたのですが
原因がわからないので、ご教示頂きたいです。
「指定した属性の部分とは違う」というのは「before」で指定・変更前のデータ状態である、ということでしょうか?
@hogeのtitleは 'title' であってほしいんですが
json = JSON.parse(response.body) の結果は
FactoryBotで生成したデフォルトのデータ(titleが 'title' ではない)
データが返ってきているので、eqマッチャの部分で落ちてしまいます。
FactoryBot のほうで テストに合わせたデータを用意するのでは目的に適いませんか? : https://stackoverflow.com/questions/19276379/change-an-attribute-on-a-factory-after-creation-of-record
controller の showはどうなってますか
あなたの回答
tips
プレビュー