У меня возникли проблемы с пониманием того, как настроить Жасмин для работы с Угловым, чтобы я мог выполнять тестирование. Я следую инструкциям here под заголовком «Тестирование контроллера». Согласно документации, вы должны иметь контроллер приложения &, определенный как вы это обычно (это наклеивается из documenation):Проблема с жасмином, работающим с угловым
angular.module('app', [])
.controller('PasswordController', function PasswordController($scope) {
//controller code goes here (removed for brevity)
});
, а затем вы должны иметь в качестве Testing Suite кода, например (вставить из документация также).
describe('PasswordController', function() {
beforeEach(module('app'));
var $controller;
beforeEach(inject(function(_$controller_){
// The injector unwraps the underscores (_) from around the parameter names when matching
$controller = _$controller_;
}));
describe('$scope.grade', function() {
it('sets the strength to "strong" if the password length is >8 chars', function() {
var $scope = {};
var controller = $controller('PasswordController', { $scope: $scope });
$scope.password = 'longerthaneightchars';
$scope.grade();
expect($scope.strength).toEqual('strong');
});
});
});
Но я ужасно путаюсь в нескольких вещах.
- Документация объясняет, что вам нужно использовать
angular-mocks
для загрузки в контроллер, но в их примере, они не объявляютngMocks
как приложение зависимости (см первый блок кода, который я вставил выше). - В нем говорится, что вы можете использовать
angular.mock.inject
для ввода контроллера в текущий контекст. Я загружался в скрипт http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-mocks.js и теперь естьangular.mock
в глобальной области, но он не имеет методаinject
. Кроме того, поскольку тестовый код работает за пределами контроллера, я не понимаю, как использование зависимостиngMocks
в угловом приложении помогает в предоставлении глобальных методов для ввода контроллеров. Все это для меня не имеет смысла. - То же самое касается
module
. В нем говорится, что вы можете использовать его дляbeforeEach(module('app'));
, и что он предоставляетсяangular-mocks
, но у углового.mock нет методаmodule
.
Если кто-то может объяснить, что я делаю неправильно, я был бы очень признателен!