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メソッド内のコントローラ内にあります。
しかし、jsファイルの中に$ scope.titleを記録すると、$ scope.titleが更新されていることがわかります。
私もそれは私が実際のコードは、それがないので、それが仕事です示す必要があると感じていないだけでfunction updateTitle(...)
あり、それは$scope.updateTitle
ではありませんつまり、呼び出される関数は$スコープではないことを言及する必要があります。私は、なぜテストの$範囲が更新されていないのだろうと思っています。
運がありません。それは何もしません。私はcallThrough(()を$ onに、$ applyを入れました。それでも未定義です。 – Tai