REST APIのテストフレームワークであるFrisby.jsのTipsを以下に記載する。
なお、Frisby.jsの導入に関しては「REST APIのテストをFrisbyで自動化する - アシアルブログ」が分かりやすい。
レスポンスとして返ってくるJSONを検証するためにexpectJSONとexpectJSONTypesという関数が用意されているが、第一引数に指定可能なpathの使い方を紹介する(pathは省略可能)。
【pathによるショートカット】
{ "member": { "name": "tomute", "sex": "male" } }
まず、上記のようなレスポンスが返って来るREST APIを検証する場合には以下のようなコードになる。
frisby.create('Test using a path as the paramater') .get('http://localhost:3000/test') .expectJSONTypes({ "member": { "name": String, "sex": String } }) .toss()
一方、pathはショートカットとして利用出来るので、以下のように書ける。
ネストを浅く出来るのでコードが少し見やすくなる。
frisby.create('Test using a path as the paramater') .get('http://localhost:3000/test') .expectJSONTypes('member', { "name": String, "sex": String }) .toss()
更に以下のようなjsonで"profile"部分だけを検証したいというケースにも利用可能。
{ "member": { "name": "tomute", "sex": "male", "profile": { "job": "engineer", "hobby": "ski" } } }
具体的には以下のような形で書けば良い。
frisby.create('Test using a path as the paramater') .get('http://localhost:3000/test') .expectJSONTypes('member.profile', { "job": String, "hobby": String }) .toss()
【pathによる配列のチェック】
以下のようにJSONに配列が含まれている場合、pathに"*"や"?"を指定することで、チェックを効率的に行う事が出来る。
{ "member": [ { "name": "tomute", "sex": "male" }, { "name": "tom", "sex": "male" }, { "name": "kate", "sex": "female" } ] }
例えば全ての配列のTypeが正しい事をチェックする場合には以下のようなコードになる。
frisby.create('Test using a path as the paramater') .get('http://localhost:3000/test') .expectJSONTypes('member.*', { "name": String, "sex": String }) .toss()
一方、配列のどこかに"tomute"がいる事をチェックする場合には以下のようなコードになる。
frisby.create('Test using a path as the paramater') .get('http://localhost:3000/test') .expectJSON('member.?', { "name": "tomute", "sex": "male" }) .toss()