【发布时间】:2015-08-25 17:37:38
【问题描述】:
最后,我开始使用 jasmine 进行测试,并成功完成了标准模式下的所有测试。
我试图改变声明我的工厂和服务的方式,就像一个类一样,每个类都有构造函数和必要的参数。现在测试失败了。
我不明白我在浏览器中打开了我的测试并使用 Chrome 设置了断点。在工厂电话中,在服务电话中。最后在测试中,我在 beforeEach 之后和注入内部设置了断点。我在工厂类中设置了一些断点,而 Chrom,e 并没有止步于此。
当我执行测试时,Location 处理程序在 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.controller("Local....))
标签: angularjs unit-testing jasmine