Javascript:如何覆盖某些类中的公共(public)方法?

标签 javascript ajax unit-testing overriding jsunit

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

相关文章:

javascript - 如何将 AJAX JSON 映射到标签和值?

javascript - 页面加载后如何检查RadioButton-Item是否被选中?

javascript - paper-radio-group 仅在第二次单击时进行选择

javascript - 将成功添加到双 jquery/ajax post

unit-testing - 如何对从 webapp2 请求处理程序传递给 jinja2 模板的模板变量进行单元测试

unit-testing - Moq - 模拟 ILog.InfoFormat 而不检查每个参数

visual-studio - Visual Studio 无法运行单元测试(调用 executor 'executor://nunit3testexecutor/' 时发生异常)

javascript - 使用 Angular 和 ASP WEB API CORE 上传文件?

javascript - 2 个不同的 javascript 语句在应该相同的情况下返回不同的值

java - 将参数数据从 JQuery/Ajax 调用传递到 Jersey Web 服务