Promise를 호출하는 범위 함수에 대한 테스트를 작성하고 있으며 약속 해결 후 설정된 일부 범위 속성에 액세스하려고합니다.Jasmine으로 약속을 호출하는 테스트 범위 함수
이 기본적으로 내 컨트롤러 기능입니다 :
범위 함수를 호출 한 후, 내$scope.message
이 잘 살고있다, 경우입니다 내가 꽤 많이 테스트 할
$scope.submitNewForm = function(){
Service.createUser($scope.user).then(function(result){
if (result){
$scope.message = 'success';
} else {
$scope.message = 'error';
}
$scope.$apply();
});
};
.
지금까지 내가 $q.defer()
를 사용하여 몇 가지 테스트를했지만 저는 누락 된 것에 더 성공
beforeEach(inject(function ($controller, $rootScope, _Service_, $q) {
scope = $rootScope.$new();
Service= _Service_;
deferred = $q.defer();
UserController= $controller('UserController', {
$scope: scope
});
}));
it('should call Service.createUser and set a message', function(){
spyOn(Service, 'createUser').and.callFake(function() {
return deferred.promise;
});
scope.submitNewForm();
scope.$digest();
expect(scope.message).toBeDefined();
});
어떤 아이디어가 없었나요?
답변 주셔서 감사합니다. 나는 Promise 콜백 내에서'$ scope. $ apply()'를 호출했기 때문에 이미'Error : [$ rootScope : inprog] $ digest가 진행 중입니다. 하지만 내 생각에 변화를 적용해야합니다. 이견있는 사람? – adolfosrs