Abaixo apresentamos uma demonstração de código que pode servir como base para testes de serviços do tipo Filter do Angular.js utilizando Jasmine.
//--- Código do Filtro --------------------------
var myApp = angular.module('myApp', []);
/**
* Filtro utilizado para converter notações específicas em Boolean.
* Se o valor de entrada for 'f' / 0 / '0' / 'false' / 'no'/ 'n' ou um array vazioserá retornado false, todos os demais valores retornarão true.
*/
myApp.filter('bool', function () {
return function (value) {
if (value && value.length !== 0) {
var v = angular.lowercase('' + value);
value = !(v === 'f' || v === '0' || v === 'false' || v === 'no' || v === 'n' || v === '[]');
} else {
value = false;
}
return value;
};
});
// ---SPECS-------------------------
describe('myApp', function () {
beforeEach(function () {
module('myApp');
});
it('Bool filter foi carregado corretamente?', inject(function($filter) {
expect($filter('bool')).not.toBeNull();
}));
it("Deverá retornar true se a entrada de dados é diferente de 'f' / 0 / '0' / 'false' / 'no'/ 'n' ou um array vazio", inject(function (boolFilter) {
expect(boolFilter(true)).toBeTruthy();
expect(boolFilter('any string')).toBeTruthy();
expect(boolFilter(1)).toBeTruthy();
expect(boolFilter([1234])).toBeTruthy();
expect(boolFilter({})).toBeTruthy();
}));
it("Deverá retornar false se o valor de entrada é igual a um dos seguintes valores 'f' / 0 / '0' / 'false' / 'no'/ 'n' e array vazio ", inject(function (boolFilter) {
expect(boolFilter(false)).toBeFalsy();
expect(boolFilter('false')).toBeFalsy();
expect(boolFilter('f')).toBeFalsy();
expect(boolFilter(0)).toBeFalsy();
expect(boolFilter('n')).toBeFalsy();
expect(boolFilter([])).toBeFalsy();
}));
});
// --- Executor -------------------------
(function () {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function (spec) {
return htmlReporter.specFilter(spec);
};
var currentWindowOnload = window.onload;
window.onload = function () {
if (currentWindowOnload) {
currentWindowOnload();
}
execJasmine();
};
function execJasmine() {
jasmineEnv.execute();
}
})();




