Angularjs Karma Jasmine测试在集成ui路由器后全部失败
我在这个应用程序中有很多测试都通过了,但是在集成了ui路由器之后,每个测试都失败了。我遇到了类似于Angularjs Karma Jasmine测试在集成ui路由器后全部失败,angularjs,angular-ui-router,karma-runner,karma-jasmine,Angularjs,Angular Ui Router,Karma Runner,Karma Jasmine,我在这个应用程序中有很多测试都通过了,但是在集成了ui路由器之后,每个测试都失败了。我遇到了类似于TypeError:undefined不是对象的错误(评估“$httpBackend.verifyNoOutstandingExpectation”)。和TypeError:undefined不是对象(计算“$rootScope.$digest”)。一旦我进行了集成,测试中注入的任何东西都不再有效 只有在我插入$stateProvider、$stateParams或$urlRouteProvider
TypeError:undefined不是对象的错误(评估“$httpBackend.verifyNoOutstandingExpectation”)
。和TypeError:undefined不是对象(计算“$rootScope.$digest”)
。一旦我进行了集成,测试中注入的任何东西都不再有效
只有在我插入$stateProvider、$stateParams或$urlRouteProvider
时,测试才会失败。如果我不注射,他们就会通过
是否有我需要的某种配置?有人知道为什么之前的注射突然都不存在了吗
错误示例
forEach@app/vendor/angular/angular.js:403:24
loadModules@app/vendor/angular/angular.js:4880:12
createInjector@app/vendor/angular/angular.js:4802:30
WorkFn@app/vendor/angular-mocks/angular-mocks.js:3163:60
app/vendor/angular/angular.js:4921:53
TypeError: undefined is not an object (evaluating '$rootScope.$digest') in app/core/test/sideBarDirTest.js (line 63)
app/core/test/sideBarDirTest.js:63:23
业力配置
basePath: '',
frameworks: ['jasmine'],
files: [
'app/vendor/jquery/dist/jquery.js',
'app/vendor/angular/angular.js',
'app/vendor/angular-resource/angular-resource.js',
'app/vendor/angular-mocks/angular-mocks.js',
'app/core/app.js',
'app/core/envConfig.js',
'app/core/sideBarDir.js',
'app/core/app.js',
'app/core/test/*.js',
'**!/!*.html',
{pattern: 'app/core/**/*.json', watched: true, served: true, included: false}
],
exclude: [
'app.js',
'**/gulpfile.js'
],
reporters: ['progress', 'coverage', 'junit'],
preprocessors: {
'app/**/*.html': ['ng-html2js'],
'app/core/**/!(*Test|*test).js': 'coverage',
},
ngHtml2JsPreprocessor: {
stripPrefix: 'app/',
moduleName: 'html'
},
junitReporter: {
outputFile: 'coverage/test-results.xml',
suite: ''
},
coverageReporter: {
type: 'lcov',
dir: 'coverage/'
},
port: 9876,
colors: true,
config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['PhantomJS'],
captureTimeout: 10000,
singleRun: true
我意识到根本原因只是缺少一些模块。似乎我对ui路由器的集成需要在karma配置中添加比我想象的更多的文件 当我问这个问题时,错误信息非常基本,这就是引起我头痛的原因。我修复了这个问题,使用Chrome作为浏览器在Karma配置中进行测试。这个开关立即向我显示了这个问题。显然,PhantomJS去掉了/没有添加错误消息中有趣的部分(读取:实际角度错误)
因此,如果你随机地通过了以前通过的每个测试,那么我建议你切换到Chrome浏览器,看看你是否没有得到所有东西。在你用于karma测试的应用程序中,你是否将
ngMock
列为依赖项?是的。当我使用ngRoute时,没有问题。你的测试中依赖于任何真正的http请求吗?是的,我在某一点上有各种类型的REST http请求。当我必须集成真实和模拟http请求的混合时,我必须集成本文中的建议以使其工作。它可能会帮助您:使用Chrome runner对调试非常有帮助。但不确定实际问题是否可以解决