我有这样的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

09-19 09:53