2
약속 단위 테스트를 테스트하는 데 문제가 있습니다.재스민 단위 테스트 약속을 모의
"expect (scope.test) .toBe (12);"이라는 어설 션을 넣었습니다. 이것은 내 코드에서 반환 된 약속의 내부입니다. 다음은
나는 시험에 내 실제 코드 시도하고있다 : 아래
$scope.getBudgets = function(){
BudgetService.getBudgets().then(function(response) {
$scope.test = 12;
}, function(response) {
});
}
내 단위 테스트입니다 : 당신에게 전화를 놓치고처럼
describe('budgetOverviewCtrl tests', function() {
beforeEach(module('app'));
beforeEach(module('ngRoute'));
var ctrl, scope, deferred;
describe('budgetOverviewCtrl with test', function() {
beforeEach(inject(function($controller, _$rootScope_) {
scope = _$rootScope_.$new();
ctrl = $controller('budgetOverviewCtrl', {
$scope: scope
});
}));
it('Should check if getBudgets service promise exists and returns as expected', inject(function($injector, $q, BudgetService) {
BudgetService = $injector.get("BudgetService");
deferred = $q.defer();
deferred.resolve({"Hello": "World"});
spyOn(BudgetService, 'getBudgets').and.callFake(function() {
return deferred.promise;
});
scope.getBudgets();
expect(BudgetService.getBudgets).toHaveBeenCalled();
**//Below line isnt called - this is inside the promise then.**
expect(scope.test).toBe(12);
}));
});
});
[SitePoint : Angular의 $ apply() 및 $ digest()]에 대한 이해 (http://www.sitepoint.com/understanding-angulars-apply-digest/) – xmojmr