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:
- angular.module('moduleName',[]).filter('utcDate',function() {
- return function(input){
- if (input === null) {
- return '';
- }
- return moment(moment.utc((new Date(input))).toDate()).format('DD.MM.YYYY HH:mm');
- };
- });
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.
- describe('Utc date filter test suite: ',function(){
- var mockfilter;
- beforeEach(function () {
- module('moduleName');
- inject(function (utcDateFilter) {
- mockfilter = utcDateFilter;
- });
- });
- it('Should convert properly', function () {
- var d = "Fri Mar 11 2016 09:49:00 GMT+0200 (EET)",
- exp = "11.03.2016 09:49";
- expect(mockfilter(d)).toBe(exp);
- });
- it('Should return empty value if input is null', function () {
- expect(mockfilter(null)).toBe('');
- });
- });
Burada dikkat etmemiz gerekn “utcDate” diye yazdığımız filtreyi inject ederken “utcDateFilter” diye çağırmamız.
Kolay Gelsin