最后,我必须使用茉莉花运行测试,并且所有测试均成功通过标准模式进行。
我试图改变声明工厂和服务的方式,就像一个类,为每个类构造构造函数并提供必要的参数。现在测试失败了。
我不明白的是我在浏览器中打开了测试,并使用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] 删除。
我来说两句