В настоящее время я работаю с Angular и использую Karma и Jasmine для тестирования. Фильтры, например, внедряются в основной модуль и могут быть протестированы без каких-либо проблем, но когда я пытаюсь протестировать контроллеры, после внедрения я получаю пустой объект.
Вот код моего основного модуля:
(function () {
'use strict';
var dependencies = [];
angular.module('myApp', dependencies)
}());
Контроллер, который я должен проверить:
(function () {
'use strict';
angular.module('myApp')
.controller('NavCtrl', ['$scope',
function ($scope) {
$scope.currentUser = null;
}]);
}());
И, наконец, набор тестов:
describe ("controller", function() {
beforeEach(module("myApp"));
var $scope, $rootScope, controllerLoader;
beforeEach(inject(function($injector) {
$rootScope = $injector.get('$rootScope');
$scope = $rootScope.$new();
var $controller = $injector.get('$controller');
controllerLoader = function() {
return $controller('NavCtrl', {
'$scope': $scope
});
};
}));
it ("testing injection", function() {
var controller = controllerLoader();
expect(controller).toNotEqual({});
})
});
Но результат теста FAIL, и после отладки я вижу, что инжектированный контроллер пуст. Я уже пытался дать ложное имя для контроллера и тест просто вылетает, что означает, что контроллер обнаружен, но по какой-то причине я не получаю его свойства.
var $controller = $injector.get('$controller');
внутрь функцииcontrollerLoader
. - person Davin Tryon   schedule 25.03.2014$scope
- person doodeec   schedule 25.03.2014$scope
. Спасибо большое! - person Eduardo Páez Rubio   schedule 25.03.2014