Помимо различных вычислительных средств сопоставления, 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)); }); });
Ниже приведен вывод приведенного выше кода.