如何在命令行中testingAJAX?

假设我在JavaScript有一些代码,它使用jQuery.ajax调用服务器REST API。

为了testing它,我想

  • 使用一个虚拟的HTTP服务器,它读取来自静态XML文件的响应;
  • 运行JavaScript代码“无头”,即没有浏览器;
  • 在命令行中运行所有这些testing。

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

我还没有做这样的事情,但说实话,我正在评估以下方法:

http://blog.stevensanderson.com/2010/03/30/using-htmlunit-on-net-for-headless-browser-automation/

这真的很有趣,我希望这个链接可以帮助你开始

使用node.js的主要问题是它不提供浏览器提供的所有东西,包括XMLHttpRequest。

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

我对XHR缺乏支持的工作是将这个XHR实现与一些微软提供的代码结合使用,为标准XHR添加向旧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."); } })(); }; 

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