我在互聯網上看到了一些這些問題,但沒有一個答案似乎解決了我的問題。我有一個服務可以在我的服務應用程序中完美工作,但是當我在Karma中測試它時,它沒有被定義。服務沒有定義時,它注入Karma測試 - AngularJS
我在src
文件夾中有我的模塊和相關的控制器,指令和服務。這個文件的結構如下:
angular.module('cst-error-framework', ['md.alerts', 'md.input', 'md.modals']);
angular.module('md.alerts', [])
.directive(//..associated directives here
angular.module('md.input', [])
//blah blah blah
angular.module('md.modals', [])
//directives and controllers
.factory('mdErrorHandler', function() {
//contents here
});
我知道這似乎有點麻煩,但還有其他原因,我有這個在一個文件中。
然後我對mdErrorHandler
規格如下:
describe('Service errorHandler', function() {
beforeEach(function() {
module('cst-error-framework');
angular.mock.module('templates');
});
var mdErrorHandler;
beforeEach(inject(function(_mdErrorHandler_){
mdErrorHandler = _mdErrorHandler_;
console.log(mdErrorHandler);
}));
這是我karma.conf.js
:
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'bower_components/jquery/dist/jquery.js',
'bower_components/angular/angular.js',
'bower_components/angular-sanitize/angular-sanitize.js',
'bower_components/angular-mocks/angular-mocks.js',
'dist/cst-error-framework.js',
'dist/cst-error-framework.css',
'src/**/templates/*.html',
'src/helpers/*.js',
'src/**/test/*.spec.js'
],
preprocessors : {
'src/**/templates/*.html': 'ng-html2js'
},
ngHtml2JsPreprocessor: {
stripPrefix: 'src/',
moduleName: 'templates'
},
exclude: [],
port: 9876,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: [process.env.TRAVIS ? 'Firefox' : 'Chrome'],
singleRun: false
});
'use strict';
};
然後當我運行的業力測試,沒有被定義我的mdErrorHandler
,所以結果我的console.log
只是[]
。
任何想法是怎麼回事?這是否與Karma加載內容的順序有關?想避免完全重構我的主.js
文件。
編輯 開始懷疑可能是我的大文件中的東西導致問題?這是我的Karma Gulp任務:
gulp.task('karma', ['build'], function(done) {
karma.start({
configFile: __dirname + '/karma.conf.js',
singleRun: true
}, done);
});
謝謝,這是一個很好的觀點。不過,我做了這個改變,仍然有同樣的問題。現在已經在問題中包含了一些Gulpfile信息。 – MDalt
請檢查更新後的答案 –
這對我有效。但我還需要在beforeEach(注入(function($ injector)) mdErrorHandler = $ injector.get('mdErrorHandler'); console.log(mdErrorHandler); })); ''' – myfashionhub