我有这样的 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 的扩展功能。它使这一切变得非常干净,另外,如果您确实愿意,您仍然可以访问父类(super class)的方法。您可能也会对它们的增强对象感兴趣。
这是链接http://developer.yahoo.com/yui/examples/yahoo/yahoo_extend.html
关于Javascript:如何覆盖某些类中的公共(public)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1755771/