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

angularjs – 迁移到角1.4.3后,Karma测试用例无法正常工作

发布时间:2020-12-17 07:14:00 所属栏目:安全 来源:网络整理
导读:我有一个稳定的产品,使用角1.2.23.最近,我决定转向棱角1.4.3.在与所有依赖项的几个兼容性问题之后,我的应用程序工作正常,但所有单元测试用例都已经开始失败.投资后我意识到,如果我升级所有依赖项的版本但保持角度在先前版本即1.2.23,testcases工作正常.有角
我有一个稳定的产品,使用角1.2.23.最近,我决定转向棱角1.4.3.在与所有依赖项的几个兼容性问题之后,我的应用程序工作正常,但所有单元测试用例都已经开始失败.投资后我意识到,如果我升级所有依赖项的版本但保持角度在先前版本即1.2.23,testcases工作正常.有角度1.4.3,由于某种原因,单元测试中的依赖注入失败.

以下是bower.json中更新的依赖项列表.

"dependencies": {
"angular-cookies": "1.4.3","bootstrap": "3.0.3","angular-ui-router": "0.2.15","angular-gettext": "2.1.0","angular": "1.4.3","angular-ui-utils": "3.0.0","restangular": "1.4.0","angular-route": "1.4.3","momentjs": "2.10.6","angular-i18n": "1.4.3"
 }

以下是测试文件 –

describe("Module: x.xyz",function () {
describe("Factory: xyz",function () {
    var service;

    beforeEach(function () {
        module('x.xyz');

        inject(function ($injector) {
            service = $injector.get("xyz");
        });
    });

    describe("Testing service(): ",function () {
        describe('Testing getXYZDescription(): ',function () {
            it('should return the description for the xyz event name passed if it is available',function () {
                expect(service.getXYZDescription('abc')).toBe('abc');
            });
        });
    });
});
});

当我运行上面的测试用例时,我得到的服务是未定义的.有人可以帮忙吗?

解决方法

从角度1.3升级到1.4时,我遇到了类似的问题.在我的情况下,我忘了将角度模拟从1.3升级到1.4.我怀疑在从1.2到1.3的过渡中,模拟功能被分解为一个单独的模块,尽管我似乎无法找到证实这一点的文档.在这种情况下,您不需要原始应用程序的角度模拟依赖项,但您需要在升级时添加依赖项.

你应该能够通过在你的karma配置中添加“angular-mocks”:“1.4.x”到你的依赖项列表和安装文件的链接来解决这个问题.为了完整起见,这是一个最小的例子:

karma.conf.js:

/*global module*/

module.exports = function (config) {
    'use strict';

    config.set({
        basePath: '.',frameworks: ['jasmine'],files: [
            'node_modules/angular/angular.js','node_modules/angular-mocks/angular-mocks.js','*.js'
        ],autoWatch: true,singleRun: false,browsers: ['Chrome']
    });
};

的package.json:

{
  "name": "angular-inject-test","version": "1.0.0","description": "","main": "index.js","scripts": {
    "test": "karma start karma.conf.js"
  },"author": "","dependencies": {
    "angular": "1.4.x","angular-mocks": "1.4.x","karma": "^0.13.x","karma-cli": "^0.1.x","karma-jasmine": "^0.3.x","karma-chrome-launcher": "^0.2.x"
  }
}

test.js:

/*global angular,beforeEach,describe,expect,inject,it,module*/


angular.module('x',[])
    .factory('xyz',function () {
        "use strict";
        return {
            getXYZDescription: function (value) {
                return value;
            }
        };
    });


describe("Module: x.xyz",function () {
    "use strict";

    describe("Factory: xyz",function () {
        var service;

        beforeEach(function () {
            module('x');

            inject(function ($injector) {
                service = $injector.get("xyz");
            });
        });

        it('Should echo input',function () {
            expect(service.getXYZDescription('abc')).toBe('abc');
        });
    });
});

(编辑:李大同)

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

    推荐文章
      热点阅读