最近,我为现有的角度应用添加了一项安全功能。这是我之后得到的:
Chrome 3X.0.2125 (Linux) ERROR
Some of your tests did a full page reload!
Chrome 3X.0.2125 (Linux): Executed 23 of 102 (skipped 2) ERROR
这就是我设置安全功能的方法:
angular.module('myapp', [/*..I have omitted..*/])
.run(function(MyLoginSerivce, /*.. I have omitted ..*/)){
if(!MyLoginService.isLoggedIn()){
MyLoginService.redirectForLogin();
}else{
/* other logics */
}
}
我知道我必须在每个测试规范中添加以下代码。但这听起来很愚蠢,将其添加到数十个测试文件中。
beforeEach(module(function($provide){
$provide.value("MyLoginServce", {
isLoggedIn: function(){
return true;
},
redirectForLogin: function {}
});
}));
有没有办法告诉Karma使用模拟服务并只在一个地方添加一段代码?
由于
第1步:我将其保存在单独的文件中,例如./test/mocked.login.service.js:
var mockedLoginService = {
isLoggedIn: function(){
return true;
},
redirectForLogin: function {}
});
步骤2:我将文件包含在karma.conf.js中,插入'test / mocked.login.service.js'
第3步:我只是在我的测试中使用它,如下所示:
beforeEach(module(function($provide){
$provide.value("MyLoginServce", mockedLoginService
}));
答案 0 :(得分:3)
您可以将模拟的服务作为对象提取到单独的js文件中,将该文件包含在karma.conf文件列表中,然后在规范中将该对象用作全局。