Fusic Advent Calendar発起人の小山です。
最近はPortisheadばかり聴いています。
さて、Fusic Advent Calendarもクリスマスバージョンが無事終わり(自分は見事に当たりませんでした)、
エクストラステージ「日本式アドベントカレンダー」に突入しております。
「も〜うい〜くつね〜る〜と〜」のあれです。
ブラウザから確認
Webシステムを作成していると、やっぱりブラウザから挙動をテストをしたりしますよね。
その時に、便利なのがSeleniumです。
簡単な挙動確認ならば、Selenium IDEで操作の記録をすることで、何度も同じ操作の確認を行うことができます。
では、ユーザの新規登録はどうしますか?
さらにメールアドレスを登録して、確認メールが来るようなテストはどうしていますか?
一度登録してしまうともう一度そのメールアドレスは登録できなかったりしますよね。
ブラウザから初期化
方法はいろいろあると思います。
データベースを直接操作してもいいですし、そもそもSeleniumを使っているならば、Selenium RCなどを利用する際にデータベースを初期化してもいいかもしれません。
ただ、ブラウザからちょっと簡単に操作したいと思ってCakePHPのPluginを作成してみたので紹介したいと思います。
Clickinit Plugin
Clickinit Pluginはブラウザ側からサーバサイドで処理を実行するためのプラグインです。
以下のようにAppContollerの$componentsに登録するだけで、まずは設置完了です。
次に、実際にサーバサイドで行う処理を書いたスクリプトをapp/vendor/shells/に設置します。
その時に、ファイル名の先頭には数字を付与してください。これは実行すべきファイルの判別と、実行順序を判定するために利用しています。
(例:00-initdb.php, 01-clearcache.php)
あとはページの左上に表示されたタブをクリックするだけで、すべてのスクリプトを実行することができます。
スクリプトの実行はrequire()を利用しているので、CakePHPの定数やクラスなども使えます。
たったこれだけのプラグインです。
Clickinitはサーバのスクリプトを実行するスイッチ的なものです。
たったこれだけですが、意外に便利です。
例えば、データベースの初期化だけでなく、CakePHPのキャッシュを一旦削除して挙動を確認するときにも便利です。
ブラウザから操作ができるので、開発時のSelenium IDEのテストケースに追加してもいいかもしれません。
注意
Clickinit Pluginはあくまで開発時に使うプラグインです。
特にサーバ内スクリプトを動かすものになりますので、デプロイ時には外すようにしましょう
まとめ
ブラウザからサーバ内スクリプトを実行するClickinitを紹介しました。
ブラウザから初期化ができるだけで、意外に効率もあがります。
もし良かったら皆さんも試してみてください。