Учебники

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

В приведенном выше примере мы создали один метод, который преднамеренно выдает исключение из этого метода, и в ожидаемом блоке мы ожидаем отловить ошибку. Если все пойдет хорошо, этот фрагмент кода даст следующий результат.

Блок исключений

Теперь, чтобы этот тестовый случай не прошел , нам нужно пропустить этот оператор 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)); 
   });
});

Здесь мы объявили одну функцию, которая даст нам суммирование чисел, представленных в качестве аргументов. В блоке ожидаемых мы ожидаем, что результатом может быть что угодно, но это должно быть число.

Поскольку и 9, и 9 после суммы 18 дают число, этот тест будет пройден, и в качестве вывода будет создан следующий зеленый снимок экрана.

Любой метод

Теперь давайте изменим код в соответствии со следующим фрагментом кода, где мы ожидаем переменную строкового типа в качестве вывода функции 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));    
   });
});

Ниже приведен вывод приведенного выше кода.