Невозможно ввести $ q в службу во время тестирования службы

#angularjs #karma-jasmine

#angularjs #карма-жасмин

Вопрос:

 (function (angular) {
    'use strict';
    var testingModule= angular.module('testingModule', []); 
testingModule.factory('testService', [ '$q',
        function ($q) {
            var service = {
                    get: null
                },
                tokenDeferred = $q.defer(),

            service.getDataWithPromise = function () {

                        tokenDeferred.resolve({token: this.token, isAuthenticated: true});
                    } 
                });

                return tokenDeferred.promise;
            };
})(angular)
  

Когда я пытаюсь написать модульный тест для этого случая, он всегда выдает мне $ q undefined, есть идеи, что может быть не так?

Ниже я описываю способ, которым я внедряю :

    beforeEach(inject(function ($q_, _testService_) {
    q = $q
        fmOauthAccessTokenService = _testService_;

        scope = $rootScope.$new();

    }));
  

Комментарии:

1. вы ввели $q_ , но используете $q для назначения q . Вот почему вы получаете ошибку. Поэтому это должно быть либо $ q , либо просто $ q. Angular разрешает $ q только как $ q . Так что особой разницы не будет.

Ответ №1:

Это должно быть так (пожалуйста, обратите внимание на двойные подчеркивания, окружающие $q ):

 beforeEach(inject(function (_$q_, _testService_) {
    q = _$q_;
        fmOauthAccessTokenService = _testService_;

        scope = $rootScope.$new();

    }));