Я хочу протестировать событие "ng-click" в angular с жасмином, но я не знаю, как
Мой файл директивы подобен этому (headbarDirective.js):
(function () {
angular.module('app.widgets.homeHeadbar',[])
.directive('homeHeadbar', homeHeadbar);
function homeHeadbar() {
return {
restrict: 'EAC',
replace: true,
transclude: false,
scope: {
name: '@',
role: '@',
},
templateUrl: 'app/widgets/headbar/headbarView.html',
link: function(scope, ele, attrs) {
if (!scope.name) {
scope.logined = false;
} else {
scope.logined = true;
}
scope.logout = function() {
UserService.logout();
$location.path('/login');
};
}
};
}
})();
мой файл шаблона, подобный этому (headbarView.html):
<nav>
<div>
<div class="navbar-right" ng-show="logined">
<div class="dib fr ml20">
<div class="user-name cwh">{{name}}</div>
<div class="user-position cgray">{{role}}</div>
</div>
<a class="logout" href="javascript:;" ng-click="logout()">Log Out</a>
</div>
</div>
</nav>
и мой тестовый файл выглядит так (test.js):
describe('test the headbarDirective',function(){
beforeEach(module('templates','app','app.widgets.homeHeadbar'));
var scope,ele,compile,simpleHtml,UserService,location;
beforeEach(inject(function(_$rootScope_,_$compile_,_UserService_,_$location_){
compile = _$compile_;
scope = _$rootScope_.$new();
location = _$location_;
UserService = _UserService_;
}));
it('test the logout click',function(){
simpleHtml = '<home-headbar name="John" role=2></home-headbar>';
ele = compile(angular.element(simpleHtml))(scope);
scope.$digest();
spyOn(UserService,'logout').and.callThrough();
$(ele).find('.logout').click();
scope.$digest();
expect(UserService.logout).toHaveBeenCalled();
});
});
и тест не выполнен, консольный результат выглядит следующим образом:
Chrome 43.0.2357 (Windows 7 0.0.0) test the headbarDirective test the logout cli
ck FAILED
Expected spy logout to have been called.
at Object.<anonymous> (C:/Users/IBM_ADMIN/desk/workspace/WaterFundWe
b/WebContent/test/unit/widgets/headbar/headbarDirective.js:48:30)
Chrome 43.0.2357 (Windows 7 0.0.0): Executed 11 of 11 (1 FAILED) (0 secs / 0.124
Chrome 43.0.2357 (Windows 7 0.0.0): Executed 11 of 11 (1 FAILED) (0.125 secs / 0
.124 secs)
означает, что функция выхода из системы не была вызвана. что-то не так с моим кодом? Как я могу проверить событие ng-click?