2012-06-03 58 views
4

假设我在JavaScript中有一些代码,它使用jQuery.ajax来调用服务器REST API。如何在命令行中测试AJAX?

为了测试它,我想

  • 使用虚拟HTTP服务器,内容从静态的XML文件的响应;
  • 运行JavaScript代码“无头”,即没有浏览器;
  • 在命令行中运行所有这些测试。

它看起来像我可以使用node.js与嵌入式虚拟HTTP服务器。是否有意义?你知道这样的项目的任何例子(在github或其他地方)吗?

+0

嗯,这是有道理的,是的。 ':)' –

+0

@ŠimeVidas而且? ... – Michael

+0

我还没有与无头浏览器,所以我不知道如何做到这一点,但我相信这并不困难。 –

回答

1

的这个链接帮助使用node.js的主要问题是它不提供浏览器将提供的所有内容......包括XMLHttpRequest。

我正在开发一个我试图用node.js测试的库(专有,仅供内部使用)的过程。

由于缺乏XHR支持,我的工作是将this implementation of XHR与某些微软提供的代码to add backwards compatibility for the standard XHR to old IE结合使用。

如果您使用的是jQuery,那么您可能需要修改它,因为jQuery稍后为旧IE添加了自己的兼容性。

结果看起来是这样的:

var XMLHttpRequest; 

if (typeof window !== 'undefined') { 
    XMLHttpRequest = window.XMLHttpRequest; 
} 
if (typeof XMLHttpRequest === "undefined") { 
    console.log("Undefined"); (function() { 
     try { 
      XMLHttpRequest = new ActiveXObject("Msxml2.XMLHTTP.6.0"); 
     } catch(e) {} 
     try { 
      XMLHttpRequest = new ActiveXObject("Msxml2.XMLHTTP.3.0"); 
     } catch(e) {} 
     try { 
      XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch(e) {} 
     try { 
      XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; 
     } catch(e) {} 
     //Microsoft.XMLHTTP points to Msxml2.XMLHTTP and is redundant 
     if (typeof XMLHttpRequest === "undefined") { 
      throw new Error("This browser does not support XMLHttpRequest."); 
     } 
    })(); 
}; 

除此之外,在运行测试套件一个简单的HTTP服务器是这类问题的常用方法。我还没有做到这一点,并且正在测试运行在测试服务器上的httpd。