JasmineJS-例外チェック

さまざまな計算マッチャーとは別に、Jasmineはプログラムの例外をチェックするためのいくつかの便利なマッチャーを提供します。次の一連のコードを使用してJavaScriptを変更してみましょう。

var throwMeAnError = function() {   
   throw new Error(); 
};  

describe("Different Methods of Expect Block", function() {  
   var exp = 25; 

   it ("Hey this will throw an Error ", function() { 
      expect(throwMeAnError).toThrow(); 
   }); 
});

上記の例では、そのメソッドから意図的に例外をスローする1つのメソッドを作成し、expectブロックでエラーをキャッチすることを期待しています。すべてがうまくいけば、このコードは次の出力を生成します。

ここで、このテストケースが失敗するためには、関数でそのthrowステートメントを省略する必要があります。 throwMeAnError。以下は、コードが要件を満たしていないため、出力として赤いスクリーンショットを生成するコードです。

var throwMeAnError = function() {   
   //throw new Error(); 
};   

describe("Different Methods of Expect Block",function() {  
   var exp = 25; 
   
   it("Hey this will throw an Error ", function() {  
      expect(throwMeAnError).toThrow();    
   }); 
});

ご覧のとおり、メソッドが例外をスローしていた場所からその行にコメントしました。以下は、SpecRunner.htmlが正常に実行されたときの上記のコードの出力です。

Jasmine.Any()

Any出力がわからないときに使用される特別なマッチャーです。次の例では、これがどのように機能するかを学習します。変更しましょうcustomerMatcher.js 次のコードで。

var addAny = function() {
   var sum = this.currentVal; 
	
   for (var i = 0; i < arguments.length; i++) { 
      sum += arguments[i]; 
   } 
	
   this.currentVal = sum;  
   return this.currentVal; 
} 

describe("Different Methods of Expect Block",function () { 
   
   it("Example of any()", function() { 
      expect(addAny(9,9)).toEqual(jasmine.any(Number)); 
   });
});

ここでは、引数として提供された数値の合計を与える1つの関数を宣言しました。期待ブロックでは、結果は何でもかまいませんが、数値である必要があります。

合計利回り18の後の9と9は両方とも数値であるため、このテストは合格し、次の緑色のスクリーンショットが出力として生成されます。

次に、次のコードに従ってコードを変更します。ここでは、関数の出力として文字列型変数が必要です。 AddAny()

var addAny = function() { 
   var sum = this.currentVal; 
	
   for(var i = 0; i < arguments.length; i++) { 
      sum += arguments[i]; 
   } 
	
   this.currentVal = sum; 
   return this.currentVal; 
}  

describe("Different Methodsof Expect Block",function () { 
   it("Example of any()", function () { 
      expect(addAny(9,9)).toEqual(jasmine.any(String));    
   });
});

上記のコードの出力は次のとおりです。