2010年11月07日
実際にどうやってんのかなーって話をあんまりしてなかったので。
まず、こんな感じのモジュールを t/lib/Test/MyApp/mysqld.pm とかで作って
M::I::TestTarget の default_test_target() で `make test` を書き換えてやり、t/script/setup_mysqld.pl に
とか書いてあげます。
それぞれのテストでは、Test::MyApp::mysqld->setup で mysqld を立ち上げるようにして置けば、
- prove で個別にやった時は、それぞれ立ち上がる
- make test したときは、最初に立ち上げて、あとは使いまわす
という感じになります。
ポイントとしては、
- $ENV{TEST_MYSQLD} に Test::mysqld のデータ構造をそのまま JSON にして突っ込む
- Test::MyApp::mysqld で $ENV{TEST_MYSQLD} の JSON を decode_json して、 Test::mysqld に bless する
ってところです。
%ENV は、文字列化したものしか扱えないのですが、それを JSON にしてやることで、後でデータを復元できるというわけです。
あと、t/script/setup_mysqld.pl では $mysqld は グローバル変数になっています。こうしないと、ファイルを抜けた時点で、Test::mysqld のインスタンスが終了してしまいます。
他の方法としては、Test::MyApp::mysqld 側で シングルトン化してしまうのもありでしょう。
また、テストで必ず呼ばれるような処理に、Test::MyApp::mysqld->cleanup() を呼んでやれば、毎回まっさらな 状態でテストを開始できます。
というわけで、最近はこんな感じでやってるよって話でした。
トラックバック一覧
コメント一覧
この記事は非常に良いですが、それでは書き続けるし、うまくいけば、このブログが成功になりましょう!
<a href="http://www.highland2007.com/archives/index_ugg172.htm" title="UGG ブーツ最安通販のpropstore">UGG ブーツ最安通販のpropstore</a>
更新された場合に、より良く、より面白いかもしれ
[url=http://www.hanbuk.ac.kr/handbag/mcm-jp-931.html]mcm expo 2013[/url]
エルメス バッグ http://www.loplopland.com/cgi-bin/blog/data/sales/hermes-jp-91.html
nike スニーカー ランキング http://www.ptu.ac.in/nike2014/nike-shoes-383.html
ポールスミス×シチズン 時計 ソーラー腕時計 psa421372 メンズ Paul Smith×CITIZEN http://www.ketab.ir/paulsmith/paulsmith-css-797.html
ポールスミス スーツ コート http://www.encardio.com/chh/paulsmith-006-1092.html
