javascript - How to deal with controller dependencies when testing directives -
i'm testing angular directive using following spec:
'use strict'; describe('playerinfo directive', function() { var element; var scope; beforeeach(module('gameapp')); beforeeach(module('templates')); beforeeach(inject(function($rootscope, $compile) { scope = $rootscope.$new(); element = '<player-info></player-info>'; element = $compile(element)(scope); scope.digest(); })); it('should replace element appropriate content', function() { expect(element.html()).tocontain('score:'); }); }); and directive:
'use strict'; angular.module('gameapp') .directive('playerinfo', playerinfo); function playerinfo() { var directive = { link: link, restrict: 'e', replace: true, templateurl: '/app/player/playerinfo.directive.html', controller: 'playerinfocontroller', controlleras: 'playerinfo' }; return directive; function link(scope, element) { var address = angular.element(element[0].getelementsbyclassname('blur')); address.on('click', function() { address.css({'-webkit-filter': 'none'}); }); } } the error keep seeing typeerror: 'undefined' not object (evaluating 'moment.utc').
edit: it's not controller causing issue after all. use angular-moment directive twice in directive's html template:
<div>{{playerinfo.game.date | amdateformat: 'mmmm do, yyyy'}} - <b am-time-ago="playerinfo.game.date"></b></div> this seems causing error, i'm not sure how resolve it. have added both src/assets/bower_components/moment/moment.js , src/assets/bower_components/angular-moment/angular-moment.js files array of karma.config.js.
the problem order in declared necessary files in karma.config.js. moment needs come before angular-moment:
files: [ ... 'src/assets/bower_components/moment/moment.js', 'src/assets/bower_components/angular-moment/angular-moment.js', ... ],
Comments
Post a Comment