2015-05-19 1 views
0

Я недавно начал пытаться научиться проверять углы. У меня был некоторый успех, но на данный момент я пытаюсь проверить директиву, и я не могу заставить его работать.Неисправность, выполняющая функцию области в угловом тесте

Код испытания

describe('navigation test', function(){ 
var element, location, route, rootScope, scope, httpBackend; 
var elm; 

beforeEach(module('myApp')); 

beforeEach(inject(function($compile,$rootScope,$location,$httpBackend,$route) { 


    location = $location; 
    scope = $rootScope.$new(); 

    route = $route; 
    $httpBackend.whenGET('partials/nav/nav.html') 
     .respond(200); 
    element = $compile("<navigation></navigation>")(scope); 
    httpBackend = $httpBackend; 
    scope.$digest(); 

})); 

describe('Change page function',function(){ 
    it('should flip the location between /home and /test', function(){ 
     location.path('/home') 
     scope.changePage(); 
     scope.$digest(); 
     expect(location.path()).to.equal('/test'); 
    }) 
}) 


}); 

функция Директива

var app = angular.module('myApp'); 

app.directive('navigation', function($location, $q, $sce, $timeout, $mdSidenav, $mdComponentRegistry) { 
return { 
    restrict: 'E', 
    templateUrl: 'partials/nav/nav.html', 
    link: function(scope, elements, attrs) { 

     scope.changePage = function() { 
      if($location.path() == '/home') { 
       $location.path('/builder') 
      } else { 
       $location.path('/home'); 
      } 
     }; 

}); Ошибка я получаю это

сообщение об ошибке

TypeError: 'undefined' is not a function

(оценка «scope.changePage()»)

Я не могу понять, почему он не может видеть сферу. Любая помощь будет принята с благодарностью. И если бы кто-нибудь мог пролить некоторый свет на угловое тестирование, это было бы здорово.

+0

очевидно ваша директива не была применена к объему. Пожалуйста, предоставьте plunker/jsfiddle – Michael

+0

Не придает ли моя директива моей области? element = $ compile ("") (область); если навигация - моя директива. Если не так, как я могу это сделать? – BobDoleForPresident

+0

Я не знаю - я просто вижу часть вашей директивы ..../Я не вижу названия директивы, а также не в каком модуле он определен. – Michael

ответ

1

Вы забыли позвонить $httpBackend.flush() для обслуживания запроса partials/nav/nav.html при построении directive. Просто добавьте его, и он должен работать нормально.

Working fiddle

Смежные вопросы