この記事の目的
Jasmineのテストコードを書くことになりましたが、コードの構造が理解できないため勉強中です。英語のドキュメントを翻訳しながら読んだので、自分なりにまとめておくことにしました。
Jasmineとは?
- 同期および非同期のJavaScriptコードをテストできる、人気のJavaScriptユニットテストフレームワークの1つ
- ビジネス価値に焦点を当てたBDD(行動駆動開発)プログラミングで使用されている
Suite
- JavaScriptの動作をテストするために使用できるテストケースのグループ
- 2つのパラメータを持つJasmineのグローバル関数describeへの呼び出しから始まる
- 最初のパラメータはテストタイトルを表し、2番目のパラメータはテストスイートを実装する関数を表す
//This is test suite
describe("Test Suite", function() {
//.....
});
Spec
- Suite内のテストケースを表す
- 2つのパラメータを持つJasmineのグローバル関数itの呼び出しから始まる
- 最初のパラメータはスペックのタイトルを表し、2番目のパラメータは、テストケースを実装する関数を表す
- specは1つ以上の期待値を含む
- spec に合格するためには、spec 内の期待値がすべて真でなければならない。spec 内の 1 つ以上の期待値が false の場合、spec は失敗する
//This is test suite
describe("Test Suite", function() {
it("test spec", function() {
expect( expression ).toEqual(true);
});
});
Describe Blocks
- describe関数は関連するspecをグループ化するためのもの
- stringパラメータはspecの集合に名前を付けるためのもの
Matchers
- jasmineのテストの実際の出力と期待される出力を比較するために使用
- toBe():実際の値が期待値と同じ型、同じ値であった場合にパス
- toBeDefined():プロパティや値が定義されているか
- toBeTruthy():プロパティや値が真であるか
- toContain():文字列や配列に部分文字列や項目が含まれているかどうか
- notを使うと、結果を反転させることができる
expect(actual).not.toBe(expected);
expect(actual).not.toBeDefined(expected);
Suites と Specsの無効化
- describe の先頭に文字列 x を追加して xdescribe とする
- 実行時にスキップされるため、その結果は表示されなくなる
xdescribe("MathUtils", function() {
//code
});
describe("MathUtils", function() {
//Spec for sum operation
xit("should be able to calculate the sum of two numbers", function() {
expect(10).toBeSumOf(7, 3);
});
});
出典・引用