Tôi đã cố gắng dò tìm một chức năng đã được thực thi khi khởi tạo bộ điều khiển, nhưng kiểm tra luôn thất bại. Tôi đã thử thực hiện $scope.$digest()
và điều này không hoạt động, Tuy nhiên trong giao diện điều khiển, tôi thấy rằng hàm đã được gọi.Kiểm tra góc: Gián điệp một chức năng đã được thực thi khi khởi tạo bộ điều khiển
Tôi không thể tìm ra điều này, Ai đó có thể giải thích cho tôi lý do tại sao tính năng này không hoạt động?
Codepen Ví dụ: http://codepen.io/gpincheiraa/pen/KzZNby
khiển
function Controller($stateParams, $scope){
$scope.requestAuthorization = requestAuthorization;
if ($stateParams.requestAuthorization === true) {
console.log('$stateParams.requestAuthorization');
$scope.requestAuthorization();
}
function requestAuthorization() {
console.log('requestAuthorization()');
}
}
Testing
describe('AppCtrl', function(){
var AppCtrl, $rootScope, $scope, $stateParams;
beforeEach(module('exampleApp'));
beforeEach(inject(function($controller, _$rootScope_, _$injector_, _$stateParams_) {
$rootScope = _$rootScope_;
$scope = $rootScope.$new();
$stateParams = _$stateParams_;
$stateParams.requestAuthorization = true;
AppCtrl = $controller('AppCtrl',{
$scope: $scope,
$stateParams : $stateParams
});
spyOn($scope, 'requestAuthorization');
}));
it('$stateParams.requestAuthorization should be defined', function() {
expect($stateParams.requestAuthorization).toBeDefined();
});
it('$scope.requestAuthorization should be defined', function() {
expect($scope.requestAuthorization).toBeDefined();
});
// this test is not passing..
it('should call requestAuthorization', function() {
//$scope.$digest();
expect($scope.requestAuthorization).toHaveBeenCalled();
});
});
Tôi tin rằng bạn sẽ phải khởi tạo bộ điều khiển trong trường hợp thử nghiệm chính nó, spyOn nó trước khi khởi tạo của bộ điều khiển, sau đó kiểm tra kết quả mong đợi sau. – northsideknight