JasmineJS - Verificação de exceção
Além de diferentes matchers computacionais, Jasmine fornece alguns matchers úteis para verificar a exceção do programa. Vamos modificar nosso JavaScript com o seguinte conjunto de código.
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();
});
});
No exemplo acima, criamos um método que lança deliberadamente uma exceção desse método e, no bloco de espera, esperamos capturar o erro. Se tudo correr bem, este trecho de código produzirá a seguinte saída.
Agora, para que este caso de teste falhe, precisamos omitir a instrução throw na função throwMeAnError. A seguir está o código que produzirá uma captura de tela vermelha como saída, uma vez que o código não atende aos nossos requisitos.
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();
});
});
Como pode ser visto, comentamos aquela linha de onde nosso método estava lançando a exceção. A seguir está a saída do código acima na execução bem-sucedida de SpecRunner.html.
Jasmine.Any ()
Anyé o matcher especial usado quando não temos certeza sobre a saída. No exemplo a seguir, aprenderemos como isso funciona. Vamos modificar ocustomerMatcher.js com o seguinte trecho de código.
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));
});
});
Aqui, declaramos uma função que nos dará a soma dos números fornecidos como argumentos. No bloco expect, esperamos que o resultado possa ser qualquer coisa, mas deveria ser um número.
Como 9 e 9 após a soma, o rendimento 18 é um número, este teste será aprovado e gerará a seguinte captura de tela verde como uma saída.
Agora vamos mudar o código de acordo com o seguinte trecho de código, onde esperamos uma variável do tipo string como uma saída da função 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));
});
});
A seguir está a saída do código acima.