Я пишу модульный тест для функции в моем контроллере.
Функция использует $filter для форматирования даты в формате «гггг-мм-дд».
Однако мой скрипт кармы не запускается после строки, в которой используется фильтр.
Вот функция:
$scope.myFunction = function (someDate) {
var dateTo = new Date(someDate);
var myDate = $scope.myDate;
// Code fails after line below on unit test /////
var searchdate = (filter('date')(myDate, 'yyyy-MM-dd'));
searchdate = serviceConvertISODate.convertDate(searchdate);
}
В приведенном выше примере var myDate = 1405967947000 (формат эпохи)
Модульный тест:
describe('Validating functions within Controller', function () {
var scope, ctrl, filter, localServiceConvertISODate;
beforeEach(inject(function($controller, $rootScope, $filter, serviceConvertISODate) {
scope = $rootScope.$new(),
ctrl = $controller('MyController', {
$scope: scope,
filter : $filter,
serviceConvertISODate : localServiceConvertISODate
});
}));
it('should test my function', function() {
var dateTo = new Date("22 Sep 2014");
console.log("********* dateTo = " + dateTo );
var myDate = $scope.myDate;
console.log("********* myDate = " + myDate );
var searchdate = (filter('date')(myDate, 'yyyy-MM-dd'));
console.log("searchdate after filter = " + searchdate);
searchdate = localServiceConvertISODate.convertDate(searchdate);
});
});
Я вижу через свои журналы:
dateTo is returning the correct new date
myDate is returning the correct myDate
Однако применение следующей строки (фильтра) приводит к прерыванию теста и ошибка не возникает.