Как исправить приведенный ниже тестовый пример при переходе с angularjs 1.6.9 на 1.7.8 - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь перенести приложение angularjs с версии 1.6.9 на версию 1.7.8. мой тестовый случай не удался с

angular-mock.js ($ rootScope)

ОШИБКА: Нет ответа Определено! в angularjs / angular-mocks.js (1607)

ОШИБКА: $ rootScope: INPROG

, так как я новичок в тестировании кармы жасмина, я пробовал с $ rootcope.flush (),но я не могу ее решить.

это мой первый юнит-тест с Angularjs и жасминовой кармой, я не могу найти точную причину, и я также просмотрел примечания к выпуску других выпусков.

с помощью $ rootScope я обнаружил, что они изменили область его действия для функции, не являющейся универсальной.

Ниже приведен мой spec.js: я получаю сообщение об ошибке с $ rootcope, flush (). Могли бы некоторые помочь мне решить эту проблему, как это требуется.

       $httpBackend.when('GET','/application/api/prefernce-definition')
          .respond(successResponsePrefernces);
        $httpBackend.when('POST','/application/api/setprefernce-definition')
          .respond(201);
        $httpBackend.when('POST','/application/api/v1/set-prefernces');
        $httpBackend.when('POST','/application/api/v2/balances')
          .respond(accountApiResponse);

        //assertion for expecting proper get request for preferences-definition
        $httpBackend.expectGET(,'/application/api/v1/prefernce-prefernces');

        //fetch and set prefernces
        $scope.onclickSetting();
        $rootScope.flush();
        $timeout.flush();

        //now save the settings
        $scope.saveViewSettings();
// getting error in this line after the flush
        $rootScope.flush();
        $timeout.flush();

        var viewMode = $scope.model.viewSettings.viewMode,
           viewModeExpected = successResponsePreferences.preferenceDefinitionList[0];

        expect(viewMode.default).toBe(viewModeExpected.defaultPreferenceValue);
        expect(viewMode.selected).toBe(viewModeExpected.currentUserPreferenceValue);
        expect($scope.$broadcast).toHaveBeenCalledWith("ShowFilter");

        //should update the prefernces in cache
        expect(viewMode.selected).toBe(cacheService.getPreferences().viewMode);
        expect(analyticsService.sendAction).toHaveBeenCalledwith(
          Constant.ACCOUNT_BALANCES.MODULE_NAME,
          Constant.ACCOUNT_BALANCES,VIEW_SETTINGS,
          []
          );
        expect(analyticsService.sendAction).toHaveBeenCalledwith(
          Constant.ACCOUNT_BALANCES.MODULE_NAME,
          Constant.ACCOUNT_BALANCES,VIEW_SETTINGS,
          [Constant.EXTD_MODE, Constant.NO_GROUPING]
          );
        });

Ниже приведены ошибки:

Ошибка: ответ не определен! В ../bower_components/angular-mocks/angular-mocks.js(line 1607) $ httpBackend @ / .. / bower_components / angular-mocks / angular-mocks.js: 1607: 63.

...