JasmineJS - Матчеры

Jasmine - это среда тестирования, поэтому она всегда нацелена на сравнение результата файла или функции JavaScript с ожидаемым результатом. Matcher работает аналогично в фреймворке Jasmine.

Matchers- это функция JavaScript, которая выполняет логическое сравнение фактического вывода и ожидаемого вывода. Есть два типа сопоставителейInbuilt matcher и Custom matchers.

Встроенный сопоставитель

Сопоставители, встроенные в структуру Jasmine, называются inbuilt matcher. Пользователь может легко им пользоватьсяimplicitly.

В следующем примере показано, как Inbuilt Matcher работает в среде Jasmine. В предыдущей главе мы уже использовали некоторые сопоставители.

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, называются custom matcher. Необходимо определить настраиваемый сопоставитель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-файл вSpecRunner.htmlи запустить то же самое. Он будет генерировать следующий вывод.