Метод испытания в угловом разрешении

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 возвращает результат undefined

Теги:
karma-jasmine
jasmine
angular-promise

1 ответ

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

Теперь тест, по крайней мере, дает шанс работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню