2010年12月26日日曜日

#slim3 1.0.6 のSimpleControllerを使った場合のテスト方法 #appengine

先日、slim3-1.0.6がリリースされました。たくさん機能追加がありますが、最近の自分的に嬉しい機能のひとつにController内でInputStreamが使えるissue62への対応があります。

Support for Controller#createRequestHandler():
http://code.google.com/p/slim3/issues/detail?id=62
この機能を使用する際のテストケースの書き方の例を書いておこうと思います。あと、ついでにMetaクラスにJson->Model、Model->Jsonを行うユーティリティメソッドが追加されているのでそれも使っています。@takawitterさんの仕事です、ありがとうございます、便利です。

まずはController

Httpメソッドとリクエストパラメータによって追加・修正・削除と1件返却、リスト返却を実装しているだけのシンプルなものです。ポイントはControllerではなくSimpleControllerクラスを継承している点と、asString()は使わずrequest.getParameter()でパラメータを取得するという点と、ModelMetaクラスのJson用ユーティリティメソッドが便利という点です。

ControllerをテストするControllerTest

ServletInputStreamを実装したJsonInputStreamというクラスを用意し、MockHttpServletRequest#setInputStream()に設定することでControllerへのpayloadを設定しています。

issue62とJson用ユーティリティメソッドのおかげでjsonをやりとりするControllerが一気に作り易くなって、かなーり助かります。ただ、jsonArrayToModels()modelsToJsonArray()が無いのがちょっと勿体無いかな?

コメントを投稿