Я пытаюсь написать тесты единиц для вложенного состояния. Состояние наследует некоторые элементы области из родительского состояния. В моих тестах я создаю контроллер, который, очевидно, не имеет видимости родительского состояния и, следовательно, не имеет видимости унаследованных элементов области.Наследование наследования углового интерфейса UI-Router
it('should show the account page', inject(['$controller', 'security', function ($controller, security){
// set up controller with a scope
var $scope = $rootScope.$new();
// the parent controller calls this
var user = { first: 'First', last: 'Last', email: '[email protected]', gender:'male', hasPassword:true};
$httpBackend.when('GET', '/api/user/current-user').respond(200, user);
$controller('AccountViewCtrl', { $scope: $scope});
$rootScope.$digest();
// verify the initial setup
//scope attributes defined on the parent controller
expect($scope.user).toEqual(user);
expect($scope.account).toEqual(user);
// scope attribute defined on the controller
expect($scope.genders.length).toEqual(2);
expect($scope.editable).toBe(false);
expect($scope.editCheck()).toBe(false);
}]));
AccountCtrl определяет ряд элементов, необходимых для всех дочерних состояний.
.controller('AccountCtrl', ['$scope', 'security', function ($scope, security){
$scope.user = security.requestCurrentUser();
$scope.account = angular.copy($scope.user);
}])
AccountViewCtrl определяет другие элементы, но наследует элементы от родительского AccountCtrl
.controller('AccountViewCtrl', ['$scope', function ($scope) {
$scope.editable = false;
$scope.genders = [
{ name: 'Male', value: 'male' },
{ name: 'Female', value: 'female' }
];
$scope.editCheck = function(){
return $scope.editable;
};
....
}])
Тестов неисправными, как я только инстанцирование контроллера и нет видимости родительского состояния и связанных элементов. Существует ли наилучший подход к тестированию состояний ui-router?