おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


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初心者には上流にフィードバックするべきかどうかもわからんとですよ。

本日のツッコミ(全2件) [ツッコミを入れる]
> kou (2009年04月11日(Sat) 01:13)

typoを見つけました!<br>「買いてあるしね!」→<br>「書いてあるしね!」

> zunda (2009年04月11日(Sat) 12:00)

きゃあ♪<br><br>それはそうと、上記は時々kouさんにツッコミいただいていることの受け売りです。ありがとうございます。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>