※jasmineの公式サイトはこちら。
Spec記述の基本実際に Spec(テストコード) を書いていきます。 今回はもっとも一般的(?)な正常系の記述をすることで、テストコードの書き方を試してみます。
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のサンプルを次に載せます(コードでは何もしてませんが…)。
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全体
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 の フォロー」 お願いします!!