0
테스트 파일을 테스트에 도착 :
describe('$rootScope', function() {
describe('$on', function() {
var credentials = "Basic abcd1234";
var $scope;
var $rootScope;
var $httpBackend;
...
beforeEach(inject(function($injector, $controller, _$rootScope_, $state, _$q_, currentUserService) {
$scope = _$rootScope_.$new();
$rootScope = _$rootScope_;
$httpBackend.when('GET', 'dist/app/login/login.html').respond({'title': 'TEST_TITLE'}, {'A-Token': 'xxx'});
}));
...
it('should set $scope.title if noAuthorization', function() {
spyOn($rootScope, '$on');
$controller('AppCtrl', {$scope: $scope});
$rootScope.$broadcast("$stateChangeStart");
$rootScope.$apply();
expect($rootScope.$on).toHaveBeenCalled();
expect($scope.title).toBe('TEST_TITLE');
});
});
});
$의 scope.title가 항상 내 테스트에 정의되어 있지 않습니다. 기대는 항상 실패합니다. $ emit, $ apply 등을 시도했다. 이것은 $ rootScope.on 메소드 내부의 컨트롤러 내에있다.
하지만 jscript 파일 안에 $ scope.title을 기록하면 $ scope.title에 업데이트 된 것으로 표시됩니다.
나는 또한 내가 실제 코드는 않기 때문에이 작업의 쇼하는 것이 필요하다 생각하지 않습니다 단지 function updateTitle(...)
, 그것은 $scope.updateTitle
이없는 즉, 호출되는 함수가 $ 범위에없는 것을 언급해야한다 . 테스트에서 $ 범위가 업데이트되지 않는 이유가 궁금합니다.
행운이 없습니다. 아무것도하지 않습니다. $ on과 $ apply에 callThrough (()를 두었지만 아직 정의되지는 않았습니다. – Tai