我有一个不使用Angular / Backbone的Javascript模块化应用程序。 我正在尝试为我的启动模块编写测试用例但面临问题。
Startup.js:
window.claimStartup = function (options) {
this.options = $.extend({}, this.options, options);
this.cmds = new this.serviceModule(this);
}
getClaimsCategories: function (claimTypeCode) {
var self = this;
// Refresh claim categories
return $.when(self.cmds.getClaimsCategories(claimTypeCode))
.then(function (response) {
return response;
});
},
Service.js:
claimStartup.prototype.serviceModule = function (cfg) {
this.cfg = cfg;
this.init();
}
StartUp.spec.js:
var claimStartUp;
beforeEach(function () {
spyOn(window.claimStartup.prototype, 'serviceModule');
claimStartUp = new window.claimStartup();
});
it("should be able to get categories", function () {
jasmine.spyOn(claimStartUp.cmds, 'getClaimsCategories').andReturn('XYZ');
var categories= claimStartup.getClaimsCategories('ABC');
expect(categories).toEqual('XYZ');
});
我在填充this.cmds时遇到错误,它说serviceModule构造函数没有定义,实际上我需要在初始化claimStartup时模拟serviceModule。
请告诉我如何在这种情况下编写测试用例。
答案 0 :(得分:0)
我能解决这个问题,这可能对其他人有用。
var claimStartUp;
beforeEach(function () {
var spyService = jasmine.createSpy('serviceModule');
var methodService = window.claimStartup.prototype.serviceModule;
window.claimStartup.prototype.serviceModule = spyService;
var spyUI = jasmine.createSpy('uiModule');
var methodUI = window.claimStartup.prototype.uiModule;
window.claimStartup.prototype.uiModule = spyUI;
claimStartUp = new window.claimStartup();
});