2009年04月10日(Fri) 雨とか雪とかが降っている [長年日記]
● [memo] JsUnitでリファクタリングを始めてみる
JavaScript: The Good Parts (oreilly.co.jp) を一通り読んだので、忘れないうちに、 単位換算器をリファクタリングしてみたい。 リファクタリングといえばユニットテストだよね、と思って見つけた、 JavaScript Test Driven Development with JsUnit and JSMock (infoq.com) も参考にしてみよう。 gitも使うよ。
まずはJsUnitをダウンロードして展開する。 いただいたのは、jsunit2.2alpha11.zip *1。
これでJsUnitはjsunit/以下に展開される。 jsunit/testRunner.htmlを閲覧するとinfoqの記事のようにユーザーインタフェースが現われた。
ここでJsUnit自体のテスト。とりあえず tests/jsUnitAssertionTest.htmlをRunしてみると…。
Readint Test Page file:///jsUnitAssertionTests.html timed out. Make sure that the file exists and is a Test Page.
だめじゃん。またまたしょんぼり。 ブラウザは、 Running on Mozilla/5.0 (X11; U; Linux x86_64; ja; rv:1.9.0.7) Gecko/2009032510 Momonga/3.0.7-1m.mo5 Minefield/3.0.7。
Firefox 2だとどうだろうか? Running on Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.15) Gecko/20080708 Momonga/2.0.0.15-1m.mo4 BonEcho/2.0.0.15。
Status: Done (0.723 seconds)
Runs: 26 Errors: 0 Failures: 0
とりあえずはMomonga 4の上で続けよう。
次に単位換算器側の準備。 JavaScriptのディレクトリ構成はどうするんだろうか。 いつも通りsrc/とtests/でいいか。
src/に今の状態の単位換算器を入れた。
テストケースを書こう。 JsUnit自身のテストケースは、ファイル名がcamelCase(じゃなくて最初が小文字のやつ)なのがなんとなく気持ち悪いのだけれど合わせるべきだよね。 あー。HTML内のJavaScriptって<head>内に読み込ませられるのかしらん。
とりあえず下記のようなテストがちゃんとfailするのを確認した。
ここまでで一度git commit。
さて。ここで問題です。 xUnit用になっていないレガシーコードのユニットテストを書くにはどうすればいいでしょうか? というわけで休憩してかくたにさんの講演の資料を探しに行こう。 →いきいきとしたレガシーコードとの暮らし
*1 SourceForgeのダウンロードページはブラウザの幅が狭いと広告に邪魔されてパッケージがクリックできない。しょんぼり。
● HTMLのhead内に読み込むJavaScriptのファイルはtext/htmlではダメ
はやっぱり効いてませんでした。HTMLファイルの最初のDTDの宣言で蹴られてた。仕方がないのでHTMLとJavaScriptを分けましたよ。
● JsUnitはどこで失敗したか教えてくれないのかな
● 「いきいきとしたレガシーコードとの暮らし」にはまだまだ遠い
というわけで家族の協力を得ながらやっとなんとかテストケースを作りました。このテストケースを最後まで使えるのかどうかかなりあやしい。
続きをできる日までgithubに晒しておこう。http://github.com/zunda/fluxconv/tree/master
● 上流にフィードバックするまでが遠足です
夜な夜な読ませていただいてきた、「オープンソースソフトウェアの育て方」をやっと読み終わりました。
僕のプロジェクトはみーんな開発者は僕だけなので、この本にあるような悩みのほとんどは夢のまた夢なんだけど、tDiaryでどう行動しようか、とか、本職でどう行動しようか、とか考えたときに参考になる話題もたくさんあったように思います。(実際にぶちあたってから読み直させてもらうことになるんだろうけど。)
いくつかtypoを見つけてしまったのでお知らせしてみた。「技術的な批評については、 たとえそれが直接的で歯に衣着せぬものであっても失礼にはあたりません。 実際のところ、逆にそれはほめ言葉ともとれるかもしれません。」(何が失礼にあたるのか) って買いて書いてあるしね!
というわけで皆さんも読んでみてくださいね。次はSICPをがんばってみようかな。英語だし、最後まで行かなさそうだね。
● あー。上記のJsUnitがFirefox 3で動かないように見える件は、ゆるちてください。JavaScript初心者には上流にフィードバックするべきかどうかもわからんとですよ。
最近のツッコまれどころ