Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带requirejs和karma测试的angularjs-注入未定义_Angularjs_Testing_Requirejs_Jasmine_Karma Runner - Fatal编程技术网

带requirejs和karma测试的angularjs-注入未定义

带requirejs和karma测试的angularjs-注入未定义,angularjs,testing,requirejs,jasmine,karma-runner,Angularjs,Testing,Requirejs,Jasmine,Karma Runner,我有一个项目,使用angularjs和requirejs,并使用karma进行测试。我正在尝试测试项目中的服务 这些是我用angularjs、requirejs和karma配置的文件。当我运行服务测试时,我得到以下错误类型错误:无法读取未定义的属性“inject”。如果我在测试代码中注释掉beforeach部分,一切都会正常运行,但在实际测试中我不能这样做 test-main.js var allTestFiles=[],文件; 用于(窗口中的文件。\uuuu karma\uuuuu.files

我有一个项目,使用angularjs和requirejs,并使用karma进行测试。我正在尝试测试项目中的服务

这些是我用angularjs、requirejs和karma配置的文件。当我运行服务测试时,我得到以下错误类型错误:无法读取未定义的属性“inject”。如果我在测试代码中注释掉beforeach部分,一切都会正常运行,但在实际测试中我不能这样做

test-main.js

var allTestFiles=[],文件;
用于(窗口中的文件。\uuuu karma\uuuuu.files){
if(窗口.uuuu karma.uuuuu.files.hasOwnProperty(文件)){
if(/test\.js$/.test(文件)){
allTestFiles.push(文件);
}
}
}
require.config({
baseUrl:“/base”,
//别名库路径
//必须设置“角度”
路径:{
“jquery”:“web/common/js/vendor/jquery-1.10.2/jquery-1.10.2.min”,
/*共同包括*/
“角度”:“web/common/js/vendor/angular/angular”,
“angular ui router”:“web/common/js/vendor/angular/angular ui router.min”,
“角度css注射器”:“web/common/js/vendor/angular/angular css注射器”,
“角度动画”:“web/common/js/vendor/angular/angular animate.min”,
“angularAMD”:“web/common/js/vendor/angularAMD”,
“ssss abs tpls”:“web/common/js/sandbox/ssss abs tpls”,
“角度清理”:“web/common/js/sandbox/angular sanitize”,
“Modernizer”:“web/common/js/vendor/modernizer/modernizer”,
“scrollToPlugin”:“web/common/js/vendor/scrollToPlugin/scrollToPlugin”,
“TweenMax”:“web/common/js/vendor/TweenMax/TweenMax”,
“手势”:“web/common/js/vendor/signities/signities”,
'ssss base':'web/common/js/framework/ssss.base',
“hammer”:“web/common/js/framework/hammer”,
“角度模拟”:“web/common/js/vendor/angular/angular mocks”,
/*控制器,未列出*/
/*服务*/
“MyService”:“app/services/models/MyService”,
/*指令,未列出*/
/*路由器*/
“MyApp”:“app/MyApp”,
/*乌提尔斯*/
“消息”:“app/utils/Message”
},
/*对于不支持AMD开箱即用的角度模块,请在垫片中指定它们*/
垫片:{
“角度ui路由器”:[“角度”],
“手势”:[“角度”],
“角度清理”:[“角度清理”],
“角度css注射器”:[“角度”],
“角度动画”:[“角度”],
“ssss会话”:[“角度”],
‘ssss abs tpls’:[‘角度’、‘手势’、‘角度消毒’],
“角度模拟”:[“角度模拟”]
},
/*启动应用程序*/
//部门:[“维护”],
deps:allTestFiles,
//我们必须启动jasmine,因为它是异步的
回调:窗口。\uuuu karma\uuuuuu。开始
});
karma.conf.js

//Karma配置
//生成于2014年11月5日星期三15:22:19 GMT-0600(中央标准时间)
module.exports=函数(配置){
config.set({
//用于解析所有模式(例如文件、排除)的基本路径
基本路径:'./',
//要使用的框架
//现有框架:https://npmjs.org/browse/keyword/karma-adapter
框架:['jasmine','requirejs'],
//要在浏览器中加载的文件/图案列表
档案:[
{pattern:'web/common/*.js',include:false},
{pattern:'web/common/***.js',include:false},
{pattern:'app/*.js',include:false},
{pattern:'app/***.js',include:false},
{pattern:'test/*.js',include:false},
{pattern:'test/***.js',include:false},
{pattern:'test main.js',included:true}
],
//要排除的文件列表
排除:[
/*requirejs路径文件*/
“app/main.js”
],
//在将匹配文件提供给浏览器之前对其进行预处理
//可用的预处理器:https://npmjs.org/browse/keyword/karma-preprocessor
预处理器:{
},
//要使用的测试结果报告器
//可能值:“点”、“进度”
//现有记者:https://npmjs.org/browse/keyword/karma-reporter
记者:[进展],,
//web服务器端口
港口:9876,
//启用/禁用输出中的颜色(报告器和日志)
颜色:对,
//记录级别
//可能值:config.LOG_DISABLE | | config.LOG_ERROR | | config.LOG_WARN | | config.LOG_INFO | | config.LOG_DEBUG
日志级别:config.LOG\u INFO,
//启用/禁用监视文件并在任何文件更改时执行测试
自动观察:没错,
//启动这些浏览器
//可用的浏览器启动器:https://npmjs.org/browse/keyword/karma-launcher
浏览器:['Chrome'],
//连续集成模式
//如果为真,Karma将捕获浏览器,运行测试并退出
单程:错,
插件:[
“因果报应”,
“卡玛铬发射器”,
“因果报应茉莉花”,
“卡玛幻影发射器”
]
});
};
MyService.js

define(['myApp'],函数(app){
app.register.factory(“MyService”、[“$http”、“$q”、函数($http,$q){
getData:function(){
变量数据={
“test1”:“一些数据”
};
返回{
然后:函数(myFunc){
myFunc(数据);
}
};
}
};
}]);
});
MyService.test.js

define(['angular-mocks'、'MyApp'、'MyService'],
功能(模拟、应用、MyService){
描述('MyService test',function()){
var服务;
beforeach(mocks.inject)(函数(MyService){
服务=我的服务;
}));
它('应该做点什么',函数(){
expect('abc')。toBe('abc');
});
});
});

只需调用
注入
而不是
模拟。注入
!现在应该可以了

beforeEach(inject(function(MyService){
    service = MyService;
}));

现在我得到错误:[$injector:unpr]未知提供程序:MyServiceProvider这是di