Rspecテスト備忘録〜JSON形式のデータのテストについて
本日のお題
本日のお題は、テストコード、そしてJSONです。
すなわち、レスポンスがJSON形式で返却される場合のテストをどのように書けば良いのか、ということですね。
やり方自体は単純だったのですが、若干の注意点があったので、そこも含めて解説していきます。
目次
- レスポンスがJSON形式で返却される場合の記述方法
- matcherを使用する場合の注意点
レスポンスがJSON形式になる場合に必要な記述
レスポンスがJSON形式になる場合は、リクエストの送信の記述が若干変わります。
リクエストの送信方法
get xxx_path, as: :json
通常のテストと比べると、as: :jsonの部分が追加されていますね。
返却されるデータの形式がJSONだよ、と教えているわけですね。
ちなみに、asを省略した場合はas: :htmlの扱いになります。
なので、普段は記述する必要がないわけですね。
matcherの注意点
先に結論を言ってしまうと、matcherには文字列、及びstring型の変数しか指定できません。
json = { xxx: xxx }
expect(response.body).to have_content(json)
みたいなことをすると、
No implicite conversion of Hash into String
と怒られます。
気をつけましょう。