Jasminejs-matchers

提供:Dev Guides
移動先:案内検索

JasmineJS-マッチャー

Jasmineはテストフレームワークであるため、JavaScriptファイルまたは関数の結果と期待される結果を常に比較することを目的としています。 マッチャーは、Jasmineフレームワークでも同様に機能します。

*Matchers* は、実際の出力と期待される出力の間でブール比較を行うJavaScript関数です。 マッチャーには* Inbuiltマッチャー*と* Customマッチャー*の2種類があります。

内蔵マッチャー

Jasmineフレームワークに組み込まれているマッチャーは、 inbuilt matcher と呼ばれます。 ユーザーは*暗黙的に*簡単に使用できます。

次の例は、JasmineフレームワークでのInbuilt Matcherの動作を示しています。 前の章ですでにいくつかのマッチャーを使用しています。

describe("Adding single number ", function () {

  //example of toEqual() matcher
   it("should add numbers",function() {
      expect(nested.add(5)).toEqual(5);
      expect(nested.add(5)).toEqual(10);
   });

   it("should add numbers",function() {
      expect(nested.addAny(1,2,3)).toEqual(6);
   });
}

この例のtoEqual()は、* add()メソッドと addAny()メソッドの結果を toEqual()*マッチャーに渡された引数と比較する組み込みマッチャーです。

カスタムマッチャー

Jasmineの組み込みシステムライブラリに存在しないマッチャーは、カスタムマッチャー*と呼ばれます。 カスタムマッチャーは explicitly()*で定義する必要があります。 次の例では、カスタムマッチャーの動作を確認します。

describe('This custom matcher example', function() {

   beforeEach(function() {
     //We should add custom matched in beforeEach() function.
      jasmine.addMatchers ({
         validateAge: function() {
            Return {
               compare: function(actual,expected) {
                  var result = {};
                  result.pass = (actual > = 13 && actual < = 19);
                  result.message = 'sorry u are not a teen ';
                  return result;
               }
            };
         }
      });
   });

   it('Lets see whether u are teen or not', function() {
      var myAge = 14;
      expect(myAge).validateAge();
   });

   it('Lets see whether u are teen or not ', function() {
      var yourAge = 18;
      expect(yourAge).validateAge();
   });
});

上記の例では、* validateAge()は、ある範囲で年齢を実際に検証するマッチャーとして機能します。 この例では、validateAge()はカスタムマッチャーとして機能します。 このJSファイルを *SpecRunnerl に追加して、同じように実行します。 次の出力が生成されます。

ValidateAge