jasmine - Testing a class was added or removed with karma for an angularjs app -


i trying write unit tests angularjs app using karma/jasmine.

the part i'm hung on testing class added/removed.

the function trying test:

vm.togglemenu = function togglemenu(prev) {   if(angular.element('menu').hasclass('hide')) {     if(prev) {       angular.element('#view').removeclass('col-md-8').addclass('col-md-12');     } else {       angular.element('menu').removeclass('hide');       angular.element('#view').removeclass('col-md-12').addclass('col-md-8');     }   } else {     if(prev) {       angular.element('#view').removeclass('col-md-12').addclass('col-md-8');     } else {       angular.element('menu').addclass('hide');       angular.element('#view').removeclass('col-md-8').addclass('col-md-12');     }   } }; 

the html:

<div id="view" class="col-md-12" ng-view=""></div> <menu class="col-md-4"></menu> 

menu custom directive.

my test:

describe('ctrl spec', function() {  var controller, vm, scope, menu, compile, view;     beforeeach(function(){    module('app');   module('templates');    inject(function($controller, $rootscope, $compile) {     controller = $controller;     scope = $rootscope;     compile = $compile;     vm = controller('ctrl', {$scope: scope});     menu = angular.element('<menu></menu>');     view = angular.element('<div id="view" class="col-md-12"></div>');     compile(menu)(scope);      spyon(vm, 'togglemenu');   }) });  describe('function', function() {   it('view should have class col-md-8', function() {     vm.togglemenu();     expect(view.hasclass('col-md-8')).tobe(true);  }); }); 

when console.log view get

log: {0: <div id="view" class="col-md-12 ng-scope"></div>, length: 1} 

i've tried adding class ng-hide menu in test-spec.js:

menu = angular.element('<menu class="hide"></menu>'); 

and output:

expected false true. error: expected false true. 

any on how test class added/removed appreciated!!

i still couldn't let go, had play more. found error.

this line: menu = angular.element('<menu></menu>'); being used wrong.

it needed menu = angular.element('menu');.

angular.element not meant used full tag, classes, id's, or name of element itself.