Angular 当我尝试注入服务时单元测试失败
Angular Unit test fails when i try to inject a service
我有一个 angular,我想用 karma 和 jasmine 测试我的控制器和服务。我写了一些测试,它们起作用了。然后我对我的 angular 项目做了一些大的改动。
现在我的测试都失败了,我不知道为什么。我在测试中注释掉了所有内容,只是想检查 $controller
服务是否已加载。但即使这样也行不通。
我的模块定义:
angular.module('cManagement', [
'angular-multi-select',
'ngCookies',
'ui.router',
'ui.bootstrap',
'pascalprecht.translate',
'ngIdle'
])
这是我的测试:
use strict';
describe("cManagement", function() {
beforeEach(module('cManagement'));
it('should exist', inject(function($controller){
}));
});
我的 Karma 配置:
module.exports = function(config){
config.set({
basePath : '',
reporters: ['progress', 'junit'],
files : [
'node_modules/angular/angular.js',
'node_modules/angular-cookies/angular-cookies.js',
'node_modules/angular-multi-select/dist/angular-multi-select.js',
'node_modules/angular-ui-router/release/angular-ui-router.js',
'node_modules/angular-ui-bootstrap/dist/ui-bootstrap.js',
'node_modules/angular-translate/dist/angular-translate.js',
'node_modules/angular-mocks/angular-mocks.js',
'assets/plugins/angular-idle/angular-idle.js',
'app/app.module.js',
'app/components/login/*',
'app/**/*'
],
singleRun : true,
frameworks: ['jasmine'],
browsers : ['PhantomJS'],
plugins : [
'karma-jasmine',
'karma-junit-reporter',
'karma-phantomjs-launcher'
],
junitReporter : {
outputDir: 'test_out',
userBrowserName: false
}
});
};
这是我得到的错误:
INFO [karma]: Karma v0.12.37 server started at
http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 2.1.1 (Linux 0.0.0)]: Connected on socket 7iIMKn57rTEEJqjikf2o with id 71013283
PhantomJS 2.1.1 (Linux 0.0.0) cManagement should exist FAILED
/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:4527:53
forEach@/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:321:24
loadModules@/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:4487:12
createInjector@/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:4409:30
workFn@/home/chris/IdeaProjects/campaignManagement/node_modules/angular-mocks/angular-mocks.js:2799:60
PhantomJS 2.1.1 (Linux 0.0.0): Executed 2 of 2 (1 FAILED) (0.006 secs / 0.007 secs)
感谢每一个提示。
很可能你有一个依赖问题 - 可能是一个无法加载的模块 - 但你不能确切地说出是哪个,因为 PhantomJS 有时 隐藏 错误消息中的相关信息.
解决方案是(暂时)将测试浏览器更改为 Chrome 或任何其他非无头浏览器,以查看到底出了什么问题。
例如:您应该更改 Karma 配置或 Gruntfile.js
或者您有什么:
行browsers: ['PhantomJS'],
变成类似这样的东西:browsers: ['Chrome'],
然后您应该能够看到错误并更正它。之后,您可以将其切换回 PhantomJS。
注意:只是根据 @snowe2010 的评论(问题没有答案,所以人们可能会忽略解决方案)为后代提供解决方法)
我有一个 angular,我想用 karma 和 jasmine 测试我的控制器和服务。我写了一些测试,它们起作用了。然后我对我的 angular 项目做了一些大的改动。
现在我的测试都失败了,我不知道为什么。我在测试中注释掉了所有内容,只是想检查 $controller
服务是否已加载。但即使这样也行不通。
我的模块定义:
angular.module('cManagement', [
'angular-multi-select',
'ngCookies',
'ui.router',
'ui.bootstrap',
'pascalprecht.translate',
'ngIdle'
])
这是我的测试:
use strict';
describe("cManagement", function() {
beforeEach(module('cManagement'));
it('should exist', inject(function($controller){
}));
});
我的 Karma 配置:
module.exports = function(config){
config.set({
basePath : '',
reporters: ['progress', 'junit'],
files : [
'node_modules/angular/angular.js',
'node_modules/angular-cookies/angular-cookies.js',
'node_modules/angular-multi-select/dist/angular-multi-select.js',
'node_modules/angular-ui-router/release/angular-ui-router.js',
'node_modules/angular-ui-bootstrap/dist/ui-bootstrap.js',
'node_modules/angular-translate/dist/angular-translate.js',
'node_modules/angular-mocks/angular-mocks.js',
'assets/plugins/angular-idle/angular-idle.js',
'app/app.module.js',
'app/components/login/*',
'app/**/*'
],
singleRun : true,
frameworks: ['jasmine'],
browsers : ['PhantomJS'],
plugins : [
'karma-jasmine',
'karma-junit-reporter',
'karma-phantomjs-launcher'
],
junitReporter : {
outputDir: 'test_out',
userBrowserName: false
}
});
};
这是我得到的错误:
INFO [karma]: Karma v0.12.37 server started at http://localhost:9876/ INFO [launcher]: Starting browser PhantomJS INFO [PhantomJS 2.1.1 (Linux 0.0.0)]: Connected on socket 7iIMKn57rTEEJqjikf2o with id 71013283 PhantomJS 2.1.1 (Linux 0.0.0) cManagement should exist FAILED /home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:4527:53 forEach@/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:321:24 loadModules@/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:4487:12 createInjector@/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:4409:30 workFn@/home/chris/IdeaProjects/campaignManagement/node_modules/angular-mocks/angular-mocks.js:2799:60 PhantomJS 2.1.1 (Linux 0.0.0): Executed 2 of 2 (1 FAILED) (0.006 secs / 0.007 secs)
感谢每一个提示。
很可能你有一个依赖问题 - 可能是一个无法加载的模块 - 但你不能确切地说出是哪个,因为 PhantomJS 有时 隐藏 错误消息中的相关信息.
解决方案是(暂时)将测试浏览器更改为 Chrome 或任何其他非无头浏览器,以查看到底出了什么问题。
例如:您应该更改 Karma 配置或 Gruntfile.js
或者您有什么:
行browsers: ['PhantomJS'],
变成类似这样的东西:browsers: ['Chrome'],
然后您应该能够看到错误并更正它。之后,您可以将其切换回 PhantomJS。
注意:只是根据 @snowe2010 的评论(问题没有答案,所以人们可能会忽略解决方案)为后代提供解决方法)