我有这样的JS类,必须进行测试:
SomeClass = function {
// some stuff that uses initRequest
this.initRequest = function() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
}
我想重写方法initRequest进行测试。我试图做这样的事情
var request = new MockXmlHttpRequest();
var instance = new SomeClass();
instance.initRequest = function() {
return request;
};
// some calls of the SomeClass methods that use initRequest
// some test code with assertions for the request
仍然调用
initRequest
方法实际上会调用原始代码,而不是我尝试传递给instance.initRequest
的函数。任何想法有什么问题吗?
最佳答案
查看YUI的扩展功能。这使所有这些都变得非常干净,加上,如果您确实想要,您仍然可以访问超类的方法。它们的增强对象也可能使您感兴趣。
这是链接http://developer.yahoo.com/yui/examples/yahoo/yahoo_extend.html