2015-03-10 4 views
3

У меня есть простой контроллер:Жасмин - Тестирование, если контроллер Exists Получение ошибки

app.controller("RegisterController", function ($scope, $location) { 

    // Do something 

}); 

И все, что я пытаюсь сделать, это проверить этот контроллер определяется:

describe('RegisterController', function() { 

    var $rootScope, $scope, $controller; 

    beforeEach(module('myApp')); 

    beforeEach(inject(function(_$rootScope_, _$controller_){ 
     $rootScope = _$rootScope_; 
     $scope = $rootScope.$new(); 
     $controller = _$controller_; 

     $controller('RegisterController', {'$rootScope' : $rootScope, '$scope': $scope}); 
    })); 

    it('should exist', function() { 
     expect($controller).toBeDefined(); 
    }); 
}); 

И я получаю следующая погрешность:

TypeError: undefined is not a function 

ответ

5

Вы пытаетесь протестировать неправильную вещь, вы не хотите тестировать $ controller, который является просто сервисным e в ngMock, который используется для проверки вашего собственного контроллера. https://docs.angularjs.org/api/ngMock/service/ $ controller

В основном вам необходимо создать контроллер, используя эту услугу. Я создал пример plunkr. http://plnkr.co/edit/DQZGZERfCptAlgeBUUqb?p=preview

Теперь, если вы измените имя контроллера на RegisterController1, тест завершится неудачно, надеюсь, что это поможет. `

var app = angular.module('myApp',[]); 
app.controller("RegisterController", function ($rootScope, $scope) { 

    // Do something 

}); 

describe('RegisterController', function() { 

    var $rootScope, $scope, $controller,registerController; 

    beforeEach(module('myApp')); 

    beforeEach(inject(function(_$rootScope_, _$controller_){ 
     $rootScope = _$rootScope_; 
     $scope = $rootScope.$new(); 
     $controller = _$controller_; 

     registerController = $controller('RegisterController', {'$rootScope' : $rootScope, '$scope': $scope}); 
    })); 

    it('should exist', function() { 
     expect(registerController).toBeDefined(); 
    }); 
}); 

`

<!DOCTYPE html> 
<html ng-app="myApp"> 

    <head> 
    <link data-require="[email protected]" data-semver="2.2.1" rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/jasmine/2.2.1/jasmine.css" /> 
    <script data-require="[email protected]" data-semver="2.2.1" src="http://cdnjs.cloudflare.com/ajax/libs/jasmine/2.2.1/jasmine.js"></script> 
    <script data-require="[email protected]" data-semver="2.2.1" src="http://cdnjs.cloudflare.com/ajax/libs/jasmine/2.2.1/jasmine-html.js"></script> 
    <script data-require="[email protected]" data-semver="2.2.1" src="http://cdnjs.cloudflare.com/ajax/libs/jasmine/2.2.1/boot.js"></script> 
    <script data-require="[email protected]" data-semver="1.3.14" src="https://code.angularjs.org/1.3.14/angular.js"></script> 
    <script data-require="[email protected]" data-semver="1.3.14" src="https://code.angularjs.org/1.3.14/angular-mocks.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
    </head> 

    <body> 
    <h1>Hello Plunker!</h1> 
    </body> 

</html> 
+0

работал, спасибо! –

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