パルカワ2

最近はFlutterをやっています

spec/requestsではviewが返ってきて、spec/controllerでは返ってこない

なんでだろうってハマってたら教えてもらった。マジ感謝



経緯

もともとあったactionで、こういうことしてた。

render json: @hoges.to_json(
  ...
)

で、以下のようにレスポンスのbodyを見てあれこれcontrollers specでテストしていた。

get :index
expect(JSON.parse(response.body).size).to eq(5)

それをjbuilderを使うように変更したらテストがこけた。requests specもあったので、実行して見てみるとそこではちゃんとviewが返っていて、よくよく見るとcontrollers specでは返ってきてないようである。ちなみにこういうエラーが出ていた。

Failure/Error: expect(JSON.parse(response.body).size).to eq(5)
JSON::ParserError:
  A JSON text must at least contain two octets!

教えてもらった通り、render_viewsがcontrollers specでビューを描写する設定っぽかったので、追加してみるとビューが返ってくるようになった。

describe Api::HogesController, type: :controller do
  render_views
  ...

ありがてえ!!!!!!!!!!!!!!!!!!

おもったこと

controllers specで、viewのテストしてるのが間違いな気もした。