2016-07-27 136 views
0

我正在編寫角度測試服務調用的測試用例。我在解析中返回一個變量值。我的問題是,在解決承諾後,我收到了一個未定義的值作爲響應。以下是我正在使用的代碼片段。角度解析中的測試方法

 resolve: { 
 
    peopleData: ($q, service, apiOperations, errorService) => { 
 

 
     const getHelloWorld =() => { 
 
     { 
 
      return‘ hello - world '; 
 
     } 
 
     }; 
 

 
     const errorHandler = (error, operation) => { 
 
     var deferred = $q.defer(); 
 
     errorService.handle(error, operation); 
 
     deferred.resolve({}); 
 
     return deferred.promise; 
 
     }; 
 

 
     service.getPeopleName().then((response) => { 
 
     console.log('called then method'); 
 
     if (!angular.isUndefined(response)) { 
 
      return response; 
 
     } else { 
 
      return {}; 
 
     } 
 
     }).catch((error) => { 
 
     errorHandler(error, apiOperations.GET_PEOPLE); 
 
     return {}; 
 
     }); 
 

 
    }

現在我的測試用例是

describe('state peopleService application', function() { 
 
    let $q, authService, $state, state_name = 'main.application', 
 
    result, $rootScope, applicationService; 
 
    let errorService = { 
 
    handle: function(error, operation) {} 
 
    }; 
 
    let apiOperations = { 
 
    GET_People: ‘getPeople ', 
 
    TEST_ERROR: 'testError' 
 
    }; 
 

 
    angular.module('mock.Service', []).service('mockPeopleService', function() { 
 
     var peopleService = {}; 
 
     peopleService.getPeople = function() { 
 
     let deferred = $q.defer(); 
 
     deferred.resolve(‘dummy response '); 
 
      return deferred.promise; 
 
     } 
 
     return applicationService; 
 
     }); beforeEach(angular.mock.module(home)); beforeEach(angular.mock.module('mock.Service')); beforeEach(angular.mock.inject(function(_$q_, _$state_, _mockPeopleService_, _$rootScope_) { 
 
     $q = _$q_; 
 
     $state = _$state_; 
 
     $rootScope = _$rootScope_; 
 
     peopleService = _mockPeopleService_; 
 
    })); it('should load the data',() => { 
 
     let state = $state.get(state_name); 
 
     let result = state.resolve.peopleData($q, peopleService, apiOperations, errorService); 
 
     $rootScope.$apply(); 
 
     console.log('result ' + result); 
 

 
    }); 
 

 

 
    }) 
 
});

的log.console是返回結果不確定

回答

0

記得我與{花括號}一樣的箭頭函數,return需要是明確的,就像在常規函數中一樣。因此,與目前所寫的resolve.peopleData()一樣,undefined也不足爲奇。

添加return和整理,你可能最終得到這樣的:

resolve: { 
    peopleData: ($q, service, apiOperations, errorService) => { 
     return service.getPeopleName().then(response => { 
     ^^^^^^ 
      if (angular.isUndefined(response)) { 
       throw new Error('response is undefined'); 
      } 
      return response; 
     }).catch(error => { 
      errorService.handle(error, apiOperations.GET_PEOPLE); 
      return {}; 
     }); 
    } 
} 

現在,試驗檯至少一個工作的機會。