2

我正在使用cg-angular來支撐我的項目。ng-html2js不能與Phantom一起使用,可以和Chrome一起使用

我測試了一個使用templateUr和ng-html2js將模板加載到模塊的指令。當我使用Chrome,因爲它傳遞沒有問題的瀏覽器上運行我的測試,但是當我用幻影運行它,我得到:

Error: [$injector:modulerr] Failed to instantiate module templates due to: 

這裏是我的Gruntfile的相關部分:

karma:  { 
    options:  { 
     frameworks:   ['jasmine'], 
     preprocessors:  {'directive/**/*.html':['ng-html2js']}, 
     files:    [ //this files data is also updated in the watch handler, if updated change there too 
      '<%= dom_munger.data.appjs %>', 
      'bower_components/angular-mocks/angular-mocks.js', 
      'directive/**/*.html', 
      createFolderGlobs(['*-spec.js']) 
     ], 
     ngHtml2JsPreprocessor:{ 
      moduleName:'templates' 
     }, 
     logLevel:    'ERROR', 
     reporters:   ['mocha'], 
     autoWatch:   false, //watching is handled by grunt-contrib-watch 
    }, 
    all_tests: { 
     browsers: ['PhantomJS', 'Chrome'], 
     singleRun:false 
    }, 
    during_watch:{ 
     browsers: ['PhantomJS'], 
     singleRun:true 
    } 
} 

所以運行咕嚕運行業力的測試:all_tests,像冠軍一樣工作。運行業力的咕嚕服務:during_watch失敗。

有沒有辦法檢查html2js是否實際運行?

編輯 這不是幻影。如果我在'during_watch'任務中運行Chrome,它也會失敗。

回答

1

想通了。我正在使用generator-cg-angular來支撐這個項目。它使用grunt watch事件來設置一些選項。此事件僅在服務任務期間使用,不在測試或構建期間使用。我沒有注意到它覆蓋了karma.options,所以html2js永遠不會被調用。當我將它添加到我的Gruntfile的事件部分時,html2js按照它應該運行。下面是我的Gruntfile的相關部分,顯示了更改。

if (grunt.file.exists(spec)) { 
    var files = [].concat(grunt.config('dom_munger.data.appjs')); 
    files.push('bower_components/angular-mocks/angular-mocks.js'); 
    files.push(spec); 
    files.push('directive/**/*.html'); // This one 
    grunt.config('karma.options.files', files); 
    grunt.config('karma.options.ngHtml2JsPreprocessor.moduleName', 'templates'); // And this one 
    tasksToRun.push('karma:during_watch'); 
} 
相關問題