我试图使用Jasmine来测试某些模块化JavaScript正在按预期启动。但是我绕圈子去了。
作为简化示例,我有这两个文件:
// myObj.all.js
;(function() {
window.myObj = window.myObj || {};
myObj.all = {
init: function() {
myObj.page.init();
}
};
}());
// myObj.page.js
;(function() {
window.myObj = window.myObj || {};
myObj.page = {
init: function() {
console.log('hello');
}
};
}());
在HTML中我会打电话:
myObj.all.init();
初始化一切。除了myObj.page
之外,还有更多模块,并且对myObj.all.init()
的一次调用会初始化所有模块。
我想测试一下,当调用myObj.all.init()
时,也会调用myObj.page.init()
。我认为这样的事情可以做到,但测试失败了:
spyOn(myObj.page, 'init');
myObj.all.init({});
expect(myObj.page.init).toHaveBeenCalled();
我该如何测试?