Test::JsonAPI::Autodocをリリースしました
Test::JsonAPI::Autodocをリリースしました.
https://metacpan.org/pod/Test::JsonAPI::Autodoc
https://github.com/moznion/Test-JsonAPI-Autodoc
これは何
Ruby (RSpec) にはautodocという,@r7kamuraさんが書かれたクールなモジュールがあって,
これが何かと言うと,JSON APIのテストを記述するとそのリクエストとレスポンスに応じて
自動的にそのAPIのドキュメントを生成してくれるという大層便利なモジュールです.
「テストを書くとドキュメントが出来る」という発想は最早発明と言っても過言では無いでしょう.
autodocにまつわる情報は以下を参照頂いた方が詳しくて良いでしょう.
- r7kamura/autodoc
- 体育の日って高速に唱えるとテストの日に聴こえる - ✘╹◡╹✘
- Rails でつくる API のドキュメントを自動生成してくれる autodoc がすごい - 彼女からは、おいちゃんと呼ばれています
で,これにインスパイアされて……というかこのアイデアをパクって出来たのが
このTest::JsonAPI::Autodocです.
使い方
大体ドキュメントに書いてある通りです.
こんな感じで,Test::JsonAPI::Autodocを使ったテストを書いてやって……
$ TEST_JSONAPI_AUTODOC=1 prove t/test_jsonapi_autodoc.t
という感じでテストを走らせてやると,
(ちなみに,TEST_JSONAPI_AUTODOC
という環境変数に真値を入れない場合はドキュメントが生成されません)
このようなMarkdown形式のドキュメントが生成されます.便利っぽい!
ちょっと詳しく
describe
というメソッドはsubtest
と同じような使い方が可能なメソッドで *1,
このdescribe
メソッドの内部でhttp_ok
メソッドを呼び出してやると,
http_ok
メソッドがAPIのテストを行って (APIのテストと言ってもステータスコードを見るだけですが),
その後にリクエストとレスポンスに応じてMarkdown形式のドキュメントを自動的に生成します.
なお,describe
メソッドの第一引数の文字列はドキュメントの見出しに,
http_ok
メソッドの第三引数の文字列はドキュメントの説明 (見出しの下のノート) になります.
http_ok
メソッドは単体で利用する事も可能ですが (つまり,describe
メソッドの外部で呼び出す),
その場合はステータスコードのチェックを行うだけで,ドキュメントの生成は行いません.
Markdownドキュメントは,デフォルトではプロジェクトルート直下のdocs/test_name.md
というパスに出力されます.
ドキュメントの出力先はset_documents_path
というメソッドで設定してやることが出来ます.
なお,ここでいう「プロジェクトルート」とはテストスクリプトからルートディレクトリに遡る途中で発見した
cpanfile
が置いてあるディレクトリの事を指します.つまりcpanfile
をどこか *2 に配置してやる必要があります
また,生成されるMarkdownのテンプレートも,set_template
というメソッドで自由にカスタムすることが出来ます.
これに関してはドキュメントを参照して下さい.
https://metacpan.org/pod/Test::JsonAPI::Autodoc#CUSTOM-TEMPLATE
こんな感じです!!!
なんか便利そうなので是非ご利用下さいませ.
多分,まだ色々至らない部分があると思うので,皆様のフィードバックをお待ちしております.
追記
先頃リリースしましたバージョン0.10で,Plack::Testに対応しました.
以下のように利用する事が可能です.
こうしたテストスクリプトを実行すると,以下のようなドキュメントが返ってきます.
よろしくお願いします.
追記2
Test::JsonAPI::AutodocはJSON-RPCに対応しています.
以下のようなコードを書いてやると動きます.
このテストを実行すると以下のようなマークダウンが得られます.
追記3
describe()
はsubtest()
のように,describe()
の中にTest::Moreのメソッドを記述する事が出来ます.
つまり、describe
の中にsubtest
を書いたりしても大丈夫です.describe
の中にdescribe
を書くのだけは駄目です.