※jasmineの公式サイトはこちら。
Spec記述の基本実際に Spec(テストコード) を書いていきます。 今回はもっとも一般的(?)な正常系の記述をすることで、テストコードの書き方を試してみます。
1 2 3 4 5 6 7 8 9 10 11 | describe( '"g.date.W3CDTF.parse" public static method' , function () { it( '"YYYY-MM-DDThh:mmTZD"フォーマット文字列からDateオブジェクトへ変換できる ' , function () { expect( new Date(1997, 6, 16, 19, 20, 0) ).toEqual( g.date.W3CDTF.parse( '1997-07-16T19:20+09:00' ) ); }); }); |
まず、 グローバル関数である describe を用いてテストケースの固まりを入れる箱を作ります。 次に、先ほど記述した describe の中にこれまたグローバル関数である it を用いて具体的なテストケースを記述していきます。 この具体的なテストケース(itで記述されるテスト)を BDD では Spec と呼ぶみたいです。 ちなみに、itはいくら書いてもらっても大丈夫です。
ここに出てきた関数の詳細は以下の記事を参考にしてください。
SetupとTeardown基本的な記述が分かれば、次にやりたいのは「各スペック前後で初期化と後処理」の実行といったところでしょうか? SetupとTeardownのサンプルを次に載せます(コードでは何もしてませんが…)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | describe( '"g.date.W3CDTF.parse" public static method' , function () { beforeEach( function () { }); afterEach( function () { }); it( '"YYYY-MM-DDThh:mmTZD"フォーマット文字列からDateオブジェクトへ変換できる ' , function () { expect( new Date(1997, 6, 16, 19, 20, 0) ).toEqual( g.date.W3CDTF.parse( '1997-07-16T19:20+09:00' ) ); }); }); |
これまたグローバル関数である beforeEach、afterEach を用います。 スペック前に毎回実行されるのが beforeEach、スペック終了後に毎回実行されるのが afterEach。 実行順で書くと… beforeEach → it → afterEach → beforeEach → it → afterEach → ・・・ といった感じになります。
ここに出てきた関数の詳細は以下の記事を参考にしてください。
まとめ今回の Spec 全体とその実行結果は次の通りです。ちなみにテストに使ったソースコードはこちらの記事「W3C-DTF形式文字列をDateオブジェクトへ変換」です。
↓Spec全体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | describe( 'g.date.W3CDTF' , function () { describe( '"parse" public static method' , function () { beforeEach( function () { }); afterEach( function () { }); it( '"YYYY"フォーマット文字列からDateオブジェクトへ変換できる ' , function () { expect( new Date(1997, 0, 1) ).toEqual( g.date.W3CDTF.parse( '1997' ) ); }); it( '"YYYY-MM"フォーマット文字列からDateオブジェクトへ変換できる ' , function () { expect( new Date(1997, 6, 1) ).toEqual( g.date.W3CDTF.parse( '1997-07' ) ); }); it( '"YYYY-MM-DD"フォーマット文字列からDateオブジェクトへ変換できる ' , function () { expect( new Date(1997, 6, 16) ).toEqual( g.date.W3CDTF.parse( '1997-07-16' ) ); }); it( '"YYYY-MM-DDThh:mmTZD"フォーマット文字列からDateオブジェクトへ変換できる ' , function () { expect( new Date(1997, 6, 16, 19, 20, 0) ).toEqual( g.date.W3CDTF.parse( '1997-07-16T19:20+09:00' ) ); }); }); }); |
今回利用したjasmineの関数リファレンスは次の通りです。おそらく最も基本的な関数と思います。 (※基本的にjasmineのソースコードにあるjsdocコメントを日本語化しています。 補足していたり、日本語が変だったり…不備があるかもしれないので、指摘いただけると幸いです。)
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!