夜のJSTDD boot camp

kyo_agoさんによる、JsTestDriver を教材にした「夜の」JSでTDDな boot camp
3
kyo_ago @kyo_ago

まずここからJsTestDriverをダウンロードしてください http://t.co/E38gD5sR #夜のJSTDD

2012-02-18 00:59:05
kyo_ago @kyo_ago

同じディレクトリにJsTestDriver.confを作成してください。拡張子は.confですが、中はyamlで書きます #夜のJSTDD

2012-02-18 01:00:37
kyo_ago @kyo_ago

JsTestDriver.confの中身はload:\n - test.js\ntest:\n - 10_test.jsとしてください。\nは改行です #夜のJSTDD

2012-02-18 01:01:48
kyo_ago @kyo_ago

load:はテスト対象のJSファイルを指定します。ファイル名は*が使えます。test:はテスト対象のファイルを指定します。こちらもファイル名に*が使えます #夜のJSTDD

2012-02-18 01:03:29
kyo_ago @kyo_ago

load:とtest:はload: -> test:の順で読まれる違いしかないので、読み込んでほしい順にファイル名を列挙するならどちらか片方に書いてもいいです(*で読み込めるので二つあるってことだと思う) #夜のJSTDD

2012-02-18 01:05:18
kyo_ago @kyo_ago

test.jsにはfunction target () { return 1; }を書いてください。 #夜のJSTDD

2012-02-18 01:06:52
kyo_ago @kyo_ago

10_test.jsにはAsyncTestCase('targetTest', {'testTarget' : function () { assertEquals(target(), 1); }});を書いてください #夜のJSTDD

2012-02-18 01:07:46
kyo_ago @kyo_ago

ダウンロードしたJsTestDriver-1.3.3d.jar、JsTestDriver.conf, test.js, 10_test.jsを同じディレクトリに入れてください

2012-02-18 01:08:56
kyo_ago @kyo_ago

JsTestDriver.conf内のパスはすべてJsTestDriver.confからの相対指定です。これはコマンドラインオプションで変更できます #夜のJSTDD

2012-02-18 01:10:04
kyo_ago @kyo_ago

10_test.js内に書いたAsyncTestCaseの第二引数の'testTarget'はtestから始まってないと実行されないので注意してください #夜のJSTDD

2012-02-18 01:10:47
kyo_ago @kyo_ago

全部のファイルが入ったディレクトリでjava -jar JsTestDriver-1.3.3d.jar --port 9876を実行してください。JsTestDriver Serverが起動します #夜のJSTDD

2012-02-18 01:12:03
kyo_ago @kyo_ago

同じPC上のブラウザで http://localhost:9876 にアクセスしてください。二つリンクが表示されるので、下のリンクをクリックしてください #夜のJSTDD

2012-02-18 01:14:58
kyo_ago @kyo_ago

ブラウザを起動したまま別のコンソールから同じディレクトリ上で次のコマンドを実行してください #夜のJSTDD

2012-02-18 01:15:47
kyo_ago @kyo_ago

java -jar JsTestDriver-1.3.3d.jar --server http://localhost:9876 --config JsTestDriver.conf --tests all #夜のJSTDD

2012-02-18 01:15:57
kyo_ago @kyo_ago

「.」が成功したテストの数を表します。それ以外に接続しているブラウザ上で実行した結果も個別に表示されます #夜のJSTDD

2012-02-18 01:17:24
kyo_ago @kyo_ago

テストを実行する時に指定する--serverオプションは最後に/を入れると失敗するので注意してください #夜のJSTDD

2012-02-18 01:18:20
kyo_ago @kyo_ago

pluginを入れると10_test.jsの中身はQUnit, Jasminで記述することができます(Mochaはないっぽい) #夜のJSTDD

2012-02-18 01:19:32
kyo_ago @kyo_ago

テストを実行するときのオプションに--captureConsoleを指定するとテストコード内でconsole.logしている内容をコンソールに表示させることができます #夜のJSTDD

2012-02-18 01:20:43
kyo_ago @kyo_ago

ただし、ブラウザは基本的にリロードしないので大きなデータをconsole.logするとメモリ使用量が増えてブラウザが落ちる場合があります。コンソールに表示させるだけならjstestdriver.console.logが使えるのでそちらを使いましょう #夜のJSTDD

2012-02-18 01:22:45
kyo_ago @kyo_ago

ただし、console.log = jstestdriver.console.logしてconsole.logしてもエラーになるので注意してください #夜のJSTDD

2012-02-18 01:23:27
kyo_ago @kyo_ago

AsyncTestCaseの他にTestCaseとかConditionalTestCaseとかConditionalAsyncTestCaseとかありますが、基本的に無視していいです #夜のJSTDD

2012-02-18 01:25:02
kyo_ago @kyo_ago

と、思ったけど、この瞬間Conditional*系の使い方がわかった #夜のJSTDD

2012-02-18 01:25:44
kyo_ago @kyo_ago

コンソールオプションの--tests allはallの変わりにAsyncTestCaseの第一引数を指定するとそのテストのみが実行されます #夜のJSTDD

2012-02-18 01:28:23
kyo_ago @kyo_ago

AsyncTestCaseの第二引数に'setUp' : function () {}を指定するとtest*を実行する前に毎回'setUp'が呼ばれます。同じようにtearDownも指定できます #夜のJSTDD

2012-02-18 01:29:32