加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Angular Karma单元测试:如何在karma配置中注入模

发布时间:2020-12-17 17:14:28 所属栏目:安全 来源:网络整理
导读:最近,我为现有的角度应用程序添加了一个安全功能.这是我后来得到的: 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.m
最近,我为现有的角度应用程序添加了一个安全功能.这是我后来得到的:

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步:通过插入’test / mocked.login.service.js’将文件包含在karma.conf.js中

第3步:我只是在我的测试中使用它,如下所示:

beforeEach(module(function($provide){
    $provide.value("MyLoginServce",mockedLoginService
  }));

解决方法

您可以将模拟的服务作为对象提取到单独的js文件中,将该文件包含在karma.conf文件列表中,然后在规范中将该对象用作全局.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读