Angular / Jasmine:无法将类用于工厂和服务

大卫

最后,我必须使用茉莉花运行测试,并且所有测试均成功通过标准模式进行。

我试图改变声明工厂和服务的方式,就像一个类,为每个类构造构造函数并提供必要的参数。现在测试失败了。

我不明白的是我在浏览器中打开了测试,并使用Chrome设置了断点。在工厂电话,服务电话中。最后,在测试中,我在beforeEach之后和注入内部设置了断点。我在工厂课堂中设置了一些breakpòint,而Chrom并没有止步于此。

当我执行测试时,位置处理程序将在lh变量中返回undefined,令人遗憾的是,工厂内部的函数调用失败。

我的测试是:

/// <reference path="../../../_references.js" />



describe("Factory - LocalizationHandler", function () {
    var lh;

    beforeEach(module('appCookIn.Factory'));

    beforeEach(function () {
        inject(function (LocalizationHandler, LocalizationService, $http, $q) {
            lh = LocalizationHandler;
        });
    });

    ///
    /// Testea que la funcion de GetConcept la devuelva coorectamente
    ///
    it("LocalizationHandler - GetConcept", function () {
        // Arrange
        var Expected = 'Nombre';
        var json = lh.SetNewCulture("es-ES");

        // Act
        var Result = lh.GetConcept(1);

        // Assert
        expect(Result).toBe(Expected);
    });

    ///
    /// Cambia la localización actual a otra.
    ///
    it("LocalizationHandler - SetNewCulture", function () {
        // Arrange
        var ExpectedCulture = "es-ES";
        var ExpectedResult = true;

        // Act

        var Result = lh.SetNewCulture("es-ES");
        var ResultCulture = lh.GetCurrentCulture();

        // Assert
        expect(ResultCulture).toBe(ExpectedCulture);
        expect(Result).toBe(ExpectedResult);

    });

    it("LocalizationHandler - GetCurrentCulture", function () {
        // Arrange
        var Expected = "es-ES";
        lh.SetNewCulture(Expected);

        // Act
        var Result = lh.GetCurrentCulture();

        // Assert
        expect(Result).toBe(Expected);
    });

});

我的工厂是:

LocalizationHandler = function (LocalizationService, $http, $q) {
    var self = this;

    self.LocalizationItems = null;
    self.culture = "es-ES";

    var res = {
        GetCurrentCulture: function ()
        {
            return self.culture;   
        },
        SetNewCulture: function (culture)
        {
            var data = JSON.parse(LocalizationService.SetNewCulture());

            self.LocalizationItems = data[culture];

            self.culture = culture;

            return self.LocalizationItems != null;
        },
        GetConcept: function (enumerable) 
        {
            if (self.LocalizationItems == null) return;
            return self.LocalizationItems[enumerable];
        }
    }

    self.LocalizationConstructor = function (res) {
        res.SetNewCulture(res.GetCurrentCulture());

    };

    self.LocalizationConstructor(res);

    return res;
 };

app.factory("LocalizationHandler", ["LocalizationService", "$http", "$q", LocalizationHandler]);

我的服务是:

///
/// El servicio de localización trata el tema de la cultura para visualización de variables.
///


LocalizationService = function () {
    var self = this;

    self.LocalizationItems = null;
    self.culture = "es-ES";

    self.SetNewCulture = function () {
        var res = "";

        res += '{';
        res += '"es-ES": {';
        res += '"1": "Nombre",';
        res += '"2": "Llave de entrada"';
        res += '},';
        res += '"ca-ES": {';
        res += '"1": "Nom",';
        res += '"2": "Clau d`entrada"';
        res += '}';
        res += '}';

        return res;
    };

    self.LocalizationServiceCtor = function () {
    }

    self.LocalizationServiceCtor();
}

app.controller("LocalizationService", [LocalizationService]);
品牌

我认为您的问题是,您正在尝试将“服务”注册为LocalizationService底部的控制器。

尝试使用

app.service("LocalizationService", [LocalizationService]);

代替

app.controller("LocalizationService", [LocalizationService]);

但是最后,我并没有真正理解为什么在此示例中为什么要使用服务工厂。也许签出:

对服务与工厂感到困惑

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将angular js服务/工厂注入Jasmine

来自分类Dev

注入Angular工厂和服务的问题

来自分类Dev

Angular HttpClient 和服务

来自分类Dev

Angular,无法在父类中注入服务

来自分类Dev

似乎无法将angular-jwt注入工厂

来自分类Dev

无法将值分配给Angular工厂内的变量?

来自分类Dev

似乎无法将angular-jwt注入工厂

来自分类Dev

无法将值分配给Angular工厂内的变量?

来自分类Dev

Angular服务的Jasmine测试无法解决延迟的呼叫

来自分类Dev

分段文件上传和服务:Angular 2

来自分类Dev

Angular 8到9,无法将服务导入使用继承的类中

来自分类Dev

使用CoffeeScript类样式编写Angular工厂

来自分类Dev

Angular工厂中的无法拨打电话的服务方法(使用Ionic)

来自分类Dev

如何在ES5中将升级的Angular 1服务/工厂注入Angular 2组件?

来自分类Dev

如何使用Jasmine在Angular JS工厂中测试变量

来自分类Dev

Angular 2将服务注入扩展类(BaseRequestOptions)

来自分类Dev

Angular 2将服务注入扩展类(BaseRequestOptions)

来自分类Dev

Angular2:将包含指令和服务的功能分解为模块的最佳实践是什么?

来自分类Dev

angular.js将函数注入工厂

来自分类Dev

将排序添加到Angular工厂

来自分类Dev

使用Jasmine模拟Angular 9服务

来自分类Dev

测试 Angular 组件时的 Jasmine spyOn 服务

来自分类Dev

Angular 2 Observable订阅参数和服务错误

来自分类Dev

Angular JS中的数据绑定和服务调用?

来自分类Dev

angular 4 材料、输入字段和服务通信错误

来自分类Dev

函数/类为Angular服务

来自分类Dev

Angular服务中的oop类

来自分类Dev

函数/类为Angular服务

来自分类Dev

Angular Test 仅适用于模拟服务类,但不适用于值

Related 相关文章

热门标签

归档