2017-01-03 1 views
0

이 각도/재스민 테스트에서는 http 서비스를 사용하는 컨트롤러가 있습니다. 이 서비스는 services 폴더의 http.js 파일에 있습니다.Karma/Jasmine 필요한 파일을 찾을 수 없습니다.

문제점 (아래 오류 참조)은 karma.conf.js에 명시 적으로 선언 했음에도 불구하고 Karma/Jasmine이 http 서비스를 찾지 못한다는 것입니다. 무엇이 문제 일 수 있습니까?

PhantomJS 2.1.1 (Windows 8 0.0.0) Testing Bank management should retrieve bank list FAILED 

Error: [$injector:unpr] http://errors.angularjs.org/1.4.8/$injector/unpr?p0=httpProvider%20%3C-%20http (line 41) 

     libs/angular/angular.min.js:41:146 
     [email protected]/angular/angular.min.js:39:93 
     libs/angular/angular.min.js:41:198 
     [email protected]/angular/angular.min.js:39:93 
     [email protected]/angular/angular.min.js:39:363 
     [email protected]/angular/angular-mocks.js:2439:26 
     [email protected]/angular/angular-mocks.js:2411:41 
     test/web/admin/banks/mngbanks.test.js:44:10 
     [email protected]://localhost:9876/context.js:151:17 
     undefined 
     TypeError: undefined is not an object (evaluating 'deferred.resolve') in test/web/admin/banks/mngbanks.test.js (line 70) 
     test/web/admin/banks/mngbanks.test.js:70:12 
     [email protected]://localhost:9876/context.js:151:17 
PhantomJS 2.1.1 (Windows 8 0.0.0): Executed 3 of 3 (1 FAILED) (0.016 secs/0.021 secs) 
Warning: Task "karma:unit" failed. Use --force to continue. 

karma.conf.js :

module.exports = function(config) { 
    config.set({ 
    basePath: 'c:/apps/public/', 
    frameworks: ['jasmine'], 
    files: [ 
     'libs/angular/angular.min.js', 
     'libs/angular/angular-mocks.js', 
     'app/web/app.js', 
     'app/services/http.js', // <-- service is in this file 
     'app/**/*.js', 
     'test/**/*.js' 
    ], 
    exclude: [ 

    ], 
    preprocessors: {}, 
    reporters: ['progress'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['PhantomJS'], 
    singleRun: true, 
    concurrency: Infinity 
    }) 
} 

재스민 시험 :

문제는 주입 된 서비스의 종속성은 .js 파일 목록에 포함되지 않은 것을
describe('Testing management', function() { 
    var $scope; 
    var deferred; 

    var list = { 
      data: { 
       acc: 2, 
       bnks: [ 
         {sk:1, nm:"Bank 1", dsc:"Bank 1 description",als:"BK1"}, 
         {sk:2, nm:"Bank 2", dsc:"Bank 2 description",als:"BK2"}, 
         {sk:3, nm:"Bank 3", dsc:"Bank 3 description",als:"BK3"} 
       ] 
      } 
     }; 

    var ConstantsMock = { 
     ReadMany: 'M' 
    }; 

    function NgTableParamsMock() { 
    } 

    beforeEach(function() { 
     module(moduleName); 
     module(function ($provide) { 
      $provide.value('NgTableParams', NgTableParamsMock); 
      $provide.value('Constants', ConstantsMock); 
      }); 

     inject(function($controller, _$rootScope_, $q, http, $timeout) { 

     $scope = _$rootScope_.$new(); 
     console.log("scope:"+$scope) 
     deferred = $q.defer(); 
     spyOn(http, 'call').and.returnValue(deferred.promise); 
     $controller('mngBanksCtl', { 
      $rootScope: _$rootScope_, 
      $scope: $scope, 
      $timeout: $timeout, 
      http: http, 
      NgTableParams: NgTableParamsMock, 
      Constants: ConstantsMock 
     }); 
     }); 

    }); 

    it('should retrieve list', function() { 

    deferred.resolve(list); 
    $scope.$apply(); 
    expect($scope.data).toBe(list); 
    }); 
}); 
+0

자스민 테스트 코드를 추가하십시오. –

+0

테스트를 추가했습니다. – ps0604

+0

어떤 모듈이 http 서비스입니까? –

답변

0

. 나는 재스민 격리 테스트 (카르마없이)를 만들어서 오류를 말해서 카르마는하지 않았다.

관련 문제