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 {}; 
 
     }); 
 

 
    }

今私のテストケースがlog.consoleが、結果は未定義

答えて

0

はその私を覚えて返している

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); 
 

 
    }); 
 

 

 
    }) 
 
});

です■{中括弧}の矢印関数の場合、通常の関数と同様に、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 {}; 
     }); 
    } 
} 

さて、テストは、作業の少なくともチャンスを立っています。

関連する問題