【发布时间】:2015-01-24 15:37:53
【问题描述】:
我正在为我的控制器中的一个函数编写单元测试。
该函数使用 $filter 将日期格式化为 'yyyy-MM-dd' 格式。
但是,我的 karma 脚本无法在使用过滤器的行之后运行。
功能如下:
$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(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
但是,应用下一行(过滤器)会导致测试中断并且没有提供错误。
【问题讨论】:
标签: angularjs unit-testing jasmine karma-jasmine angular-filters