Я пишу модульный тест для функции внутри моего контроллера.
Функция использует фильтр $ для форматирования даты в формате «yyyy-MM-dd».
Однако мой скрипт кармы не работает после строки, на которой используется фильтр.
Вот функция:
$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);
}
В приведенном выше примере, переменная MyDate = 1405967947000 (формат EPOC) Тест
Единица:
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
Однако применение следующей строки (фильтра) приводит к разрыву теста и отсутствии ошибки.
спасибо за отзыв, это имеет смысл, но я действительно новичок в тестировании, поэтому аплозии. Можете ли вы предоставить фрагмент кода? Я получаю TypeError: 'undefined' не является функцией (оценивая '$ filter (' date ')'), когда я пытаюсь. –
Вы читали [руководство разработчика по модульному тестированию в AngularJS] (https://docs.angularjs.org/guide/unit-testing)? Я бы начал с использования '$ filter' в вашем коде и полностью удалив« фильтр ». – hon2a
если я удалю фильтр и var searchdate = ($ filter ('date') (myDate, 'yyyy-MM-dd')); я получаю ошибку ReferenceError: Не могу найти переменную: $ filter –