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

と怒られます。

気をつけましょう。