LoginSignup
4
4

More than 5 years have passed since last update.

Frisby+Jasmine+google-spreadsheets-parserでREST APIの試験

Last updated at Posted at 2016-07-27

背景

開発で既存のREST APIの調査・改修に関わったので、とりあえず正しく動く確認できる環境を作りたかった。
Google Chromeアプリの「ARC」などがよく紹介されていて、単発でのチェックにはとても良いけど、「まとめて動作試験」だと人力作業になってしまうし、パラメータの共有などがしづらい。

テストのコード化

ということで、コードでの動作確認方法として、「Frisby+Jasmine」を使ってみた。
参考文献も多く、確かに便利。JSONでやり取りする場合の内容チェックもやりやすい。
ただ、テストは「インプット→アウトプット」の組み合わせチェックとなるので、その分かなり定型コードを書かなければいけない。

なので、APIに渡すJSON(インプット)、APIから返るJSON(アウトプット)、をGoogleスプレッドシートで集中管理できると嬉しい。
今回は、簡単にスプレッドシートからデータを読み出せる"google-spreadsheets-parser"を使ってコードを作成。

Googleスプレッドシートで、一列目に「title」「post」「expected」というタイトル列を作成し、二列目以降にテストデータを入力して、下記を実行する。
エンドポイント周りなどは、試験するREST APIに応じて変わったりすると思う。

sample_spec.js
var category = "<category>"; // シートのタブ名

var GoogleSpreadsheetsParser = require('google-spreadsheets-parser');
var frisby = require("frisby");

var gss = new GoogleSpreadsheetsParser("<公開したスプレッドシートのリンク>",
        { sheetTitle: category, hasTitle: true });
var API_END_POINT = "<http://localhost:8080/api>"; // 環境に合わせて

var paramsJson = gss.toJson();
var params = JSON.parse(paramsJson);

for (var index in params) {
    var obj = params[index];

    var title = obj.title;
    var post = obj.post;
    var expected = obj.expected;

    frisby.create(title)
    .addHeaders(
            { "Content-Type":"application/json" }
    )
    .post(
            API_END_POINT,
            null,
            { "body": post }
    )
    .expectStatus(
        200
    )
    .expectJSON(JSON.parse(expected))
    .toss();
}
% npm install --save-dev jasmine-node frisby google-spreadsheets-parser
% node_modules/jasmine-node/bin/jasmine-node sample_spec.js

駆け足のメモ程度ですが。
テストのパラメータをスプレッドシート化できると、テスト実行コードはシンプルになるので良い。
定型的なものには、自動化・データ集約のメリットは大きい。

参考

http://frisbyjs.com/
https://www.npmjs.com/package/google-spreadsheets-parser

http://qiita.com/zaburo/items/8f967acd26ea08e2a54a
http://ttr-hamasaki.hatenablog.com/entry/2015/09/27/070557
http://qiita.com/tanakaworld/items/48cf222e1e911e1761c4

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4