Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – Angular Karma单元测试:如何在karma配置中注入模拟服务而不是在所有测试规范中大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
最近,我为现有的角度应用程序添加一个安全功能.这是我后来得到的:

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文件列表中,然后在规范中将该对象用作全局.

大佬总结

以上是大佬教程为你收集整理的angularjs – Angular Karma单元测试:如何在karma配置中注入模拟服务而不是在所有测试规范中全部内容,希望文章能够帮你解决angularjs – Angular Karma单元测试:如何在karma配置中注入模拟服务而不是在所有测试规范中所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。