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(); } })();