Jasmine — это среда тестирования, поэтому она всегда нацелена на сравнение результата работы файла JavaScript или функции с ожидаемым результатом. Matcher работает аналогично в рамках Jasmine.
Сопоставители — это функция JavaScript, которая выполняет логическое сравнение между фактическим и ожидаемым результатом. Существуют два типа сопоставителей: встроенные сопоставители и настраиваемые сопоставители .
Встроенный Matcher
Сопоставители, встроенные в среду Jasmine, называются встроенными сопоставителями . Пользователь может легко использовать его неявно .
В следующем примере показано, как 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 () .
Пользовательские Matchers
Сопоставители, которых нет во встроенной системной библиотеке Jasmine, называются настраиваемыми сопоставителями . Пользовательское сопоставление должно быть определено явно () . В следующем примере мы увидим, как работает пользовательское сопоставление.
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 и запустите его. Это сгенерирует следующий вывод.