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()が無いのがちょっと勿体無いかな?

closure-libraryをWebStormで使う

最近closure-libraryの勉強をしているんだけど、WebStormでキレイに補完をしたりする設定方法のメモ。
closure-libraryというよりはWebStormの話だけど、WebStormって全プロジェクトで参照できる共通ライブラリって登録できないのかな?方法を知っている人がいれば教えてください。

以下のようなフォルダ構成を想定。

  • プロジェクトのルートフォルダ
    • closure-library(ここがclosure-libraryのroot)
      • closure
        • goog
        • bin
        • css
    • src(ここに自分のjsとかcssを配置)
  1. WebStormで上記のプロジェクトのルートフォルダをOpen Directory
  2. PreferncesをひらいてProject SettingsセクションのDirectoriesを選択
  3. 一番右側の領域でproject/closure-library/closureを選択してResource Rootをクリック(真ん中の領域のResource rootsclosure-library/closureが追加される)
  4. 同様にしてsrcフォルダもResource Rootとして追加する
Closure LibraryはJsDocsもかなり書かれているから、メソッドの補完をした時のパラメータなんかもキレイに参照できる
WebStormの機能として知らなかった機能だけど、シングルクオート内でも補完が効いてびっくりした。キャメルケースマッチがあると安心ですね。キャメルケースマッチが無いクソIDEだとイライラしますもんね!

2010年12月2日木曜日

Titaniumのコード補完をWebStromで

最近Titaniumを使い始めたんだけど、コード補完するための*.jsがどこにあるのかよくわからなかった。いろいろ調べていると、

という事がわかった。自分の場合は以下のようにしました。

  • $ git clone git://github.com/appcelerator/titanium_mobile.git
  • $ wget http://developer.appcelerator.com/apidoc/mobile/1.4/api.json
  • $ node TiAutocomplete/tiDocs.js > Titanium.js
  • 作成されたTitanium.jsを、Titaniumプロジェクトの直下(Resoucesと同じレベル、Resources配下ではない)へコピー。

WebStormではTitanium用のプロジェクトをルートフォルダにしている状態です。これでTitanium.*が補完されて大変便利になりました。