2015-11-15 28 views
0

我在教自己的node.js,我採取了熱毛巾模板並開始擴展它的功能。 我已經添加了一個新的角色文件上傳控制器。 它的工作原理罰款的地方,我嘗試並實現對新模塊噶測試點,於是它拋出這個錯誤節點JS Karma測試 - HotTowel模板擴展

Chrome 46.0.2490 (Mac OS X 10.11.1) UploadController "before each" hook for "should be created successfully" FAILED 
    Error: [$injector:unpr] Unknown provider: routerHelperProvider <- routerHelper 
    http://errors.angularjs.org/1.4.7/$injector/unpr?p0=routerHelperProvider%20%3C-%20routerHelper 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:68:12 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4289:19 
     at Object.getService [as get] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39) 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4294:45 
     at getService (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39) 
     at Object.invoke (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4469:13) 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:79 
     at forEach (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:336:20) 
     at Object.createInjector [as injector] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:3) 
     at Context.workFn (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-mocks/angular-mocks.js:2427:52) 
Chrome 46.0.2490 (Mac OS X 10.11.1) UploadController "after each" hook: workFn for "should be created successfully" FAILED 
    Error: [$injector:unpr] Unknown provider: routerHelperProvider <- routerHelper 
    http://errors.angularjs.org/1.4.7/$injector/unpr?p0=routerHelperProvider%20%3C-%20routerHelper 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:68:12 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4289:19 
     at Object.getService [as get] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39) 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4294:45 
     at getService (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39) 
     at Object.invoke (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4469:13) 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:79 
     at forEach (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:336:20) 
     at Object.createInjector [as injector] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:3) 
     at Context.workFn (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-mocks/angular-mocks.js:2427:52) 
Chrome 46.0.2490 (Mac OS X 10.11.1) upload routes state "before each" hook for "should map state upload to url /upload " FAILED 
    Error: [$injector:unpr] Unknown provider: routerHelperProvider <- routerHelper 
    http://errors.angularjs.org/1.4.7/$injector/unpr?p0=routerHelperProvider%20%3C-%20routerHelper 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:68:12 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4289:19 
     at Object.getService [as get] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39) 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4294:45 
     at getService (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39) 
     at Object.invoke (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4469:13) 
     at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:79 
     at forEach (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:336:20) 
     at Object.createInjector [as injector] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:3) 
     at Context.workFn (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-mocks/angular-mocks.js:2427:52) 
Chrome 46.0.2490 (Mac OS X 10.11.1): Executed 42 of 45 (3 FAILED) (0.371 secs/0.053 secs) 

的上傳控制器看起來像: -

(function() { 
    'use strict'; 

    angular 
     .module('app.upload',['angularFileUpload']) 
     .controller('UploadController', UploadController); 

    UploadController.$inject = ['logger','FileUploader','$scope']; 
    /* @ngInject */ 
    function UploadController(logger, FileUploader, scope) { 
     var vm = this; 
     vm.title = 'Upload'; 

     var uploader = scope.uploader = new FileUploader({ 
      url: '/upload' 
     }); 

     activate(); 

     function activate() { 
      logger.info('Activated Upload View'); 
     } 

     // FILTERS 

     uploader.filters.push({ 
      name: 'customFilter', 
      fn: function(item /*{File|FileLikeObject}*/, options) { 
       return this.queue.length < 10; 
      } 
     }); 

     // CALLBACKS 

     uploader.onWhenAddingFileFailed = function(item /*{File|FileLikeObject}*/, filter, options) { 
      console.info('onWhenAddingFileFailed', item, filter, options); 
     }; 
     uploader.onAfterAddingFile = function(fileItem) { 
      console.info('onAfterAddingFile', fileItem); 
     }; 
     uploader.onAfterAddingAll = function(addedFileItems) { 
      console.info('onAfterAddingAll', addedFileItems); 
     }; 
     uploader.onBeforeUploadItem = function(item) { 
      console.info('onBeforeUploadItem', item); 
     }; 
     uploader.onProgressItem = function(fileItem, progress) { 
      console.info('onProgressItem', fileItem, progress); 
     }; 
     uploader.onProgressAll = function(progress) { 
      console.info('onProgressAll', progress); 
     }; 
     uploader.onSuccessItem = function(fileItem, response, status, headers) { 
      console.info('onSuccessItem', fileItem, response, status, headers); 
     }; 
     uploader.onErrorItem = function(fileItem, response, status, headers) { 
      console.info('onErrorItem', fileItem, response, status, headers); 
     }; 
     uploader.onCancelItem = function(fileItem, response, status, headers) { 
      console.info('onCancelItem', fileItem, response, status, headers); 
     }; 
     uploader.onCompleteItem = function(fileItem, response, status, headers) { 
      console.info('onCompleteItem', fileItem, response, status, headers); 
     }; 
     uploader.onCompleteAll = function() { 
      console.info('onCompleteAll'); 
     }; 

     console.info('uploader', uploader); 

    } 
})(); 

上傳的路由.js文件看起來是這樣的: -

(function() { 
    'use strict'; 

    angular 
     .module('app.upload') 
     .run(appRun); 

    appRun.$inject = ['routerHelper']; 
    /* @ngInject */ 
    function appRun(routerHelper) { 
     routerHelper.configureStates(getStates()); 
    } 

    function getStates() { 
     return [ 
      { 
       state: 'upload', 
       config: { 
        url: '/upload', 
        templateUrl: 'app/upload/upload.html', 
        controller: 'UploadController', 
        controllerAs: 'vm', 
        title: 'Upload', 
        settings: { 
         nav: 3, 
         content: '<i class="fa fa-lock"></i> Upload' 
        } 
       } 
      } 
     ]; 
    } 
})(); 

測試規範的樣子: -

/* jshint -W117, -W030 */ 
describe('UploadController', function() { 
    var controller; 

    beforeEach(function() { 
     bard.appModule('app.upload'); 
     bard.inject('$controller', '$log', '$rootScope'); 
    }); 

    beforeEach(function() { 
     controller = $controller('UploadController'); 
     $rootScope.$apply(); 
    }); 

    bard.verifyNoOutstandingHttpRequests(); 

    describe('Upload controller', function() { 

     it('should be created successfully', function() { 

      expect(controller).to.be.defined; 
     }); 

     describe('after activate', function() { 
      it('should have title of Upload', function() { 
       expect(controller.title).to.equal('Upload'); 
      }); 

      it('should have logged "Activated"', function() { 
       expect($log.info.logs).to.match(/Activated/); 
      }); 
     }); 
    }); 
}); 

我找到一個鏈接,指出當所有必需的依賴關係未加載時發生此錯誤。這個構建是通過吞噬精心策劃的。 gulp.js和gulp.config文件看起來很好,並且正確的資源在瀏覽器中加載。

,當我在SingleRun模式= false運行杯和產卵的Chrome實例我得到的的console.log如下: -

15 11 2015 23:21:37.527:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888) 
15 11 2015 23:21:37.528:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map/
15 11 2015 23:21:37.528:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map 
15 11 2015 23:21:37.529:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888 
15 11 2015 23:21:37.531:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888) 
15 11 2015 23:21:37.532:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map/
15 11 2015 23:21:37.532:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map 
15 11 2015 23:21:37.532:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888 
15 11 2015 23:21:37.533:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888) 
15 11 2015 23:21:37.534:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map/
15 11 2015 23:21:37.534:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map 
15 11 2015 23:21:37.534:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888 
15 11 2015 23:21:37.535:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888) 
15 11 2015 23:21:37.536:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map/
15 11 2015 23:21:37.546:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map 
15 11 2015 23:21:37.546:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888 
15 11 2015 23:21:37.547:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888) 
15 11 2015 23:21:37.548:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map/
15 11 2015 23:21:37.548:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map 
15 11 2015 23:21:37.548:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888 
15 11 2015 23:21:37.549:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888) 
15 11 2015 23:21:37.549:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map/
15 11 2015 23:21:37.549:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map 
15 11 2015 23:21:37.550:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888 
15 11 2015 23:21:37.550:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888) 

***編輯 - 跑了一口試驗--startServers =真 - 確保服務器已啓動並克服連接的拒絕錯誤。儘管

仍然得到routerHelperProvider問題文件存在於正確的地方。

我想我正在做一些明顯的錯誤,但我無法看到它。 有什麼建議嗎?

感謝

西蒙

回答

0

這個問題似乎是與phantomjs的版本。所以你需要做一些事情。

  1. here

  2. 下載最新版本的phantomjs的在命令提示符下卸載以下庫: NPM卸載phantomjs卡瑪phantomjs-發射--save-dev的

  3. 在命令提示符安裝以下庫: npm install --save-dev phantomjs-prebuilt phantomjs2 karma-phantomjs2-launcher

  4. 更新代碼中的任何參考代碼從phantomjs到phantomjs2