目录

异常检查(Exception Check)

优质
小牛编辑
134浏览
2023-12-01

除了不同的计算匹配器,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(); 
   }); 
});

在上面的例子中,我们创建了一个方法,故意从该方法抛出异常,并在expect块中我们期望捕获错误。 如果一切顺利,那么这段代码将产生以下输出。

例外块

现在,为了使这个测试用例失败,我们需要在函数throwMeAnError省略throw语句。 以下是代码,它将产生红色屏幕截图作为输出,因为代码不符合我们的要求。

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)); 
   });    
});

在这里,我们声明了一个函数,它将为我们提供作为参数提供的数字的总和。 在expect块中,我们期望结果可以是任何东西,但它应该是一个数字。

由于总和产量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));    
   });    
});

以下是上述代码的输出。

任何错误