Angular JS, Jasmine ve Karma ile Unit Test – Filter Testi

Merhaba,

Angular ile bir aplikasyon yapıyorsunuz ve filter(filtre) yazdınız. Hadi bakalım bunun unit testini yazın. Hemen şöyle tarih formatlayan bir filtremiz olsun:

 
 
  1. angular.module('moduleName',[]).filter('utcDate',function() {
  2.    return function(input){
  3.        if (input === null) {
  4.            return '';
  5.        }
  6.        return moment(moment.utc((new Date(input))).toDate()).format('DD.MM.YYYY HH:mm');
  7.    };
  8. });

Test yazarken tüm branch’lere (her if-else) girmemiz gerekecek dolayısıyla da burada bir null değerle bir de normal bir tarih değeriyle iki input verirsek tüm kodu cover etmiş oluruz.

 
 
  1. describe('Utc date filter test suite: ',function(){
  2.     var mockfilter;
  3.     beforeEach(function () {
  4.        module('moduleName');
  5.         inject(function (utcDateFilter) {
  6.             mockfilter = utcDateFilter;
  7.         });
  8.     });
  9.     it('Should convert properly', function () {
  10.         var d = "Fri Mar 11 2016 09:49:00 GMT+0200 (EET)",
  11.             exp = "11.03.2016 09:49";
  12.         expect(mockfilter(d)).toBe(exp);
  13.     });
  14.     it('Should return empty value if input is null', function () {
  15.        expect(mockfilter(null)).toBe('');
  16.     });
  17. });

 

Burada dikkat etmemiz gerekn “utcDate” diye yazdığımız filtreyi inject ederken “utcDateFilter” diye çağırmamız.

Kolay Gelsin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir