programing

오류: [$injector:unpr] 알 수 없는 공급자: Angular입니다.JS 서비스 테스트

powerit 2023. 2. 22. 23:16
반응형

오류: [$injector:unpr] 알 수 없는 공급자: Angular입니다.JS 서비스 테스트

Angular에 대한 종속성을 올바르게 제공하는 데 많은 어려움을 겪고 있습니다.JS 서비스

StackOverflow에는 유사한 오류가 있는 다른 게시물이 다수 있습니다만, 어느 게시물도 문제를 해결하지 못하는 것 같습니다.

앱 코드는 다음과 같습니다.

cm.modules.app = angular.module('myApp', ['ngRoute', 'ngAnimate']);
myServiceName = function($http) {
    // do stuff
};
myServiceName.prototype.value = 1;

cm.modules.app.service('defaultAlertFactoryA', myServiceName);

테스트 코드는 다음과 같습니다.

describe('test alertFactoryA', function() {
  var $provide;
  var mAlertFactoryA;

  beforeEach(module(cm.modules.app));

  beforeEach(angular.mock.module(function(_$provide_) {
    $provide = _$provide_;
  }));

  beforeEach(function() {
    inject(function($injector) {
      mAlertFactoryA = $injector.get('defaultAlertFactoryA');
    });
  });

  it('should work', function() {
    expect(true).toBe(true);
  });
});

다음은 오류입니다.

오류: [$injector:unpr] 알 수 없는 공급자: 기본값Alert Factory(알림 팩토리)AProvider <- 디폴트Alert Factory A http://errors.angularjs.org/1.2.0-rc.2/$injector/unpr?p0=defaultAlertFactoryAProvider%20%3C-%20defaultAlertFactoryA

질문:.어떻게 하면 시험에 합격할 수 있을까요?

모듈을 부트스트랩하려면 모듈의 이름을 지정해야 합니다.

beforeEach(module('myApp'));

데모

이하에, 동작시키기 위해서 사용한 것(최종)

 beforeEach(function() {
    module(cm.modules.app.name);

    module(function($provide) {
      $provide.service('defaultAlertFactoryA', myServiceName);
    });

    inject(function($injector) {
      defaultAlertFactory = $injector.get('defaultAlertFactoryA');
    });
 });

서비스 파일을 karma.conf.js 파일에 포함해야 할 것 같습니다.

files: [

  'app/bower_components/angular/angular.js',
  'app/bower_components/angular-mocks/angular-mocks.js',
  'app/bower_components/angular-ui-router/release/angular-ui-router.js',
  'app/app.js',
  'app/controllers/*.js',
  'app/services/*.js',
  'tests/**/*.js'
],

여기에 포함되지 않으면 장치 테스트에서 액세스할 수 없습니다.

언급URL : https://stackoverflow.com/questions/20956600/error-injectorunpr-unknown-provider-in-angularjs-service-test

반응형