【发布时间】:2016-05-17 18:23:46
【问题描述】:
当我使用模块并尝试在 karma 中注入控制器时,我收到此错误
PhantomJS 2.1.1 (Mac OS X 0.0.0) Tests for Profile Controller should work FAILED
forEach@/Users/work/Sites/APP/web-app/bower_components/angular/angular.js:322:24
loadModules@/Users/work/Sites/APP/web-app/bower_components/angular/angular.js:4548:12
createInjector@/Users/work/Sites/APP/web-app/bower_components/angular/angular.js:4470:30
workFn@/Users/work/Sites/APP/web-app/bower_components/angular-mocks/angular-mocks.js:2954:60
/Users/work/Sites/APP/web-app/bower_components/angular/angular.js:4588:53
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.004 secs / 0.016 secs)
我的测试
describe('Tests for Profile Controller', function(){
beforeEach(module('app'));
var scope, $controller;
beforeEach(inject(function(_$controller_) {
$controller = _$controller_;
}));
it('should work', function(){
expect('defined').toBeDefined();
})
})
我的 Karma 配置如下所示
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'bower_components/angular/angular.js',
'bower_components/angular-mocks/angular-mocks.js',
'dist/js/combined.bower.js',
'app/js/routes.js',
'app/js/controllers/profile.js',
'app/test/unit/controllers/profile.spec.js'
],
exclude: [
],
preprocessors: {
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['PhantomJS'],
singleRun: false,
concurrency: Infinity
})
}
我的应用程序模块是在我的 routes.js 中定义的(不是我的想法),我现在尝试测试的控制器是 profile.controller。我的 bower.combined 是我所有的凉亭组件连接和缩小。发生这种情况的任何原因?
【问题讨论】:
-
遇到同样的问题,你找到解决办法了吗?
-
原来是我的 karma conf 中加载内容的方式存在问题。我解决了这个问题,首先加载一个组合的凉亭文件,然后是角度模拟(由于某种原因,在组合凉亭中还不够,然后是我的角度模块(我不得不将声明从我的路由文件中分离出来,然后是我的控制器文件夹,然后是我的测试文件夹。我能给出的对我有很大帮助的最佳建议是将您的测试隔离到一个简单的控制器。将其内容复制到另一个文件并在范围内加载。让测试工作。然后慢慢重新添加依赖项以查看什么打破了
标签: gruntjs jasmine karma-runner